回答が付かないのは、質問に問題があるためだと思います。
件名の「配列の動的追加」は、質問の本文から
「配列の要素の動的追加」だと分かります。
しかし、提示されたプログラムは、配列ではなく、
「連結リストの要素の動的追加」になっています。
C や C++ では、配列のサイズは、宣言時に固定され、要素を動的に
追加することはできません。
int a[10] = { 1, 0, 6 }; と宣言したら、a[3]~a[9] も 0 に初期化されます。
C で動的にメモリを確保するためには malloc を使用し、これによって、
動的配列を実現します。
コード:
int *a = malloc(sizeof(int) * 3); // malloc(sizeof(int[3]) でもよい
a[0] = 1, a[1] = 0, a[2] = 6;
malloc が失敗したときのエラー処理は省略しています。
サイズを拡張したければ、次のようにしなければならないでしょう。
コード:
int *p = malloc(sizeof(int) * 10);
for (int i = 0; i < 3; i++) p[i] = a[i];
free(a);
a = p;
なお、malloc の代わりに realloc を使うこともできます。
配列の途中に要素を追加(挿入)しようとすると、サイズを拡張後、
挿入位置以降の要素をすべてずらした後、挿入位置にデータを代入
しなければなりません。
これを避けるために連結リストというデータ構造が使用されます。
連結リストについての質問なのでしょうか?