1の#include <stdio.hの> 2 。3 の#define maxSizeの100 // 100のmaxSizeの整数定数値を定義する 4。 / * シーケンステーブルの構造の定義* / 5のtypedef 構造体SqList { 6。 INTデータ[maxSizeの]; // ストア配列配列表要素 。7 INTの長さ; // シーケンステーブルの長さは保存 8。 } SqListを; // シーケンステーブル型定義を 9。 10 / * 単一のリンク・リスト・ノードの定義* / 11のtypedef 構造体lノードが{ 12は int型のデータ; // データにデータドメインのストレージノード 13は、 構造体 *次lノード; // 子孫ノードへのポインタ 14 } lノード; // 単一リンクリストのノードタイプを定義する 15 / * 二重連結リストのノードの定義* / 16のtypedef 構造体DLNode { 17。 int型のデータ; // ノードデータに格納されたデータドメイン 18は、 構造体の前* DLNode; // 先行ノードポインタのポイント 19。 構造体 DLNode *次の; // 子孫ノードへのポインタ 20である } DLNode; // 二重リンクリストのノード・タイプ定義 21は 22である * / 2.1スタート例* / 23 / * オーダーテーブルの検索は、最初の要素はのアドレスを見つけることよりも大きい返します* / 24 INT findElem(SqList L、INT X){ 25 INT I、 26である ため(I = 0 ; IはL.lengthを<; ++ I){ 27 IF(X <L.data [I]){ // テーブル内の要素の順序は、xは素子に電流をスキャン未満である参照、小から大まで一つずつ決定される 28 リターン I; // 返された現在の位置未満である場合に 29 } 30 } 31で 返す Iを; // シーケンステーブルがない場合大元素比xがxは、表要素の終了後に挿入されなければならない、がある、私は、このリターンマーク 32 } 33 / * パラメータの関数である基準として重要な役割。伝送パラメータは、プログラムポインタがしばしば採用されているデータの大きなブロックがある場合、それは、すべてのプッシュブロックデータを排除するためにC言語の関数に引数を渡す前に、値によって渡されます。 34 35 しかし、今は、(C ++)も同様に効率的な選択追加され(特定の特別な事情におよび選択でなければならない)、参照です。* / 36 空隙 insertElem(SqList L&、INT X){ // L自体が発生するので、使用することが変化するため、参照タイプが 37 [ int型のP、I、 38は P = findElem(L、X); // (機能findElemを呼び出します)挿入位置P見つけるために 39 のための(I = L.lengthを- 1。 ; I> = P; - I){ // 右から右の要素に1つの位置だけ左へ 40 L.data [Iは、+ 1。 ] = L.data [I]; 41である } 42は L.data [P] = xと; // X P上の挿入位置 43である (L.length)++; //従って内部要素長いテーブルの複数を1インクリメントし 44である } 45 / * 例2.1エンド* / 46である 47 * / 例2.2スタート* / 48 / * 添字p要素の順序リストL、成功したリターンを削除そうでなければ0 * / 49 のint deleteElem(SqList L&、INT P、INT&E){ // 変数を入力する参照して変更する必要が 50 INTをI; 51である IF(P < 0 || P> L.length- 。1 ){ 52であります 戻り 0 ; // 位置0が失敗削除返される間違った 53である } 54である E = L.data [P]; //E削除する要素に割り当てられた値 55 のために(P = I; IはL.lengthを< - 1。 ; ++ I){ 56は L.data [I] = L.data [I +は1 ]; 57である } 58 - - (L.length); // テーブル長-1 59 リターン 1 ; // 削除成功リターン1 60 } 61が 62である * / 例2.2終わり* / 63は、 64 / * 初期化シーケンステーブル* / 65 66 空隙 initList(L&SqList ){ // L自身がそうタイプを参照して変更 67 = L.length 0 ; 68 } 69 70 / * ポインティング要素の位置を見つけるアルゴリズム* / 71である INTでgetElem(SqListのL、INT P、INT&E){ // 参照型でそれを変更するには 72 IF(P < 0 || P> L.length- 。1){ // Pレンジエラー復帰0から値 73である 戻り 0 ; 74 } 75 E = L.data [P]; 76 リターン 1 ; 77 78 } 79 80 81 空隙showElem(SqListのL){ 82 INT I。 83 のために(i = 0 ; iは<L.length; ++ I){ 84 のprintf(" %のD:%Dを\ n " 、I、L.data [I])。 85 86 } 87 } 88 ボイドメイン(){ 89 SqListのL。 90 initList(L)。 91 のために(int型 I = 0 ; iが< 5 ; iが++ ){ 92 insertElem(L、iは* 10 )。 93 } 94 のprintf(" \ nを超える挿入" )。 95 showElem(L)。 96 INT A = findElem(L、10 )。 97 のprintf(" 寻找10返回:%Dを\ n " 、A)。 98 のprintf(" \ nの上で見つけます" ); 99 showElem(L)。 100 insertElem(L、35 )。 101 のprintf(" \ nの上に35を挿入します" )。 102 showElem(L)。 103 のint jを; 104 deleteElem(L、2 、J)。 105 のprintf("\ nの上に第2の削除」); 106 showElem(L); 107 }