おわかりの方がおられましたらお答えください。

32ビットで表現可能な整数を集めた表を扱うC言語プログラムを考え、表に対しては、探索と挿入の二つの操作を行うものとする。
表を実現するために、配列を用いる方法と線形(一方向)リストを用いる方法を考える。

(1)表に含まれる整数の並べ方については特に制限をおかないものとし、挿入の操作を行う関数insert()の原型(プロトタイプ)宣言と仕様を下記のものとする。
関数insert()のプログラムを、配列と線形リストを用いる場合についてそれぞれC言語で作成しなさい。
その際、関数の外部で必要となる宣言や定義があればそれも記述しなさい。

int insert(long int NewDatum);
/* 入力:表に挿入する整数 */
/* 出力:挿入に成功したときは0、失敗したときは1 */

(2)表はすでに昇順でソートされているとする。配列を用いる方法について、効率よく探索を行うアルゴリズムを与えなさい。
またそのアルゴリズムの最大時間計算量について説明しなさい。

(3)表を実現するデータ構造として、上述の二つのもの以外にどのようなものがあるかひとつあげなさい。
また、それを用いて、上記のような整数の表に対する挿入のアルゴリズムを与えなさい(なお、表に含まれる整数の重複は許さないと仮定してもよい)。

C言語に見識のある方、どうかよろしくお願いします。