int read(int *ip){
scanf("%d",ip);
return *ip;
}

insert( &g[vect], read(&val), read(&ch) );

問題点は何かと聞かれましたが,上の関数では問題点はなさそうです。
下の関数は,実行する時の動作がおかしいと言うことだろうとは思うのですが,
readを呼び出して,戻り値を引数として渡すから大丈夫だと思うのですが,
どこが問題点なのでしょうか?