>>618のinsertの問題なんですが、自分でやってみたのですが分からないので質問させてください。
問題文:ヒープに新たなデータを挿入する関数insertを作成せよ。空の配列に複数回insertを行うことで
構成したヒープがヒープ条件を満たしていることをcheck_heapを用いることで確認せよ。プロトタイプ宣言は以下とする。
void insert(int val, int a[],int *n);

質問: 
複数回はおいといてとりあえず1回insertしようと思って書いたんですが、ヒープの最後に新しいノードを
作って親より小さければ親の値と交換を繰り返してヒープを完成させようとしてるんですが、1回しか交換されません。
どうすればいいですか?
自分のソースhttp://ideone.com/q6fDH