挿入ノードを示しています
S->次= P-> 次。
P - >次=秒;
ノードを作成します
1つのtypedef 構造体lノード 2 { 3 ElemTypeデータ。 4 構造体の lノード* 次の; 5 } lノード、* LINKLIST。
1つのリストにこの操作
1.リストを作成します。
1 LINKLIST creatList() 2 { 3 LINKLIST L =(LINKLIST)はmalloc(はsizeof (lノード))。 4 LINKLIST Ptai = L。 5 Ptai->次= NULL; 6 L->次= NULL; 7 8 のprintf(" 入力の長さ:\ n " ); 9 のscanf(" %dの"、およびL-> データ)。 10 11 のために(int型 I = 1 ; I <= L->データiが++ ) 12 { 13 LINKLIST PNEW = 新しいlノード。 14 のprintf(" 入力%dのデータの\ n " 、I)。 15 のscanf(" %dの"、&pnew-> データ)。 16 17 Ptai->次= PNEW。 // 尾插法 18 Ptai = PNEW。 19 Ptai->次= NULL; 20 } 21 22 リターンL。 23 }
リストトラバース2
1つの 空隙トラバース(LINKLISTのL) 2 { 3 LINKLISTのP = L。 4 一方(P->次!= NULL) 5 { 6 のprintf(" %d個"、P->ネクスト> データ)。 7 P = P-> 次。 8 } 9 のprintf(" の\ n " ); 10 }
3.挿入ノード
ステータスinsertList(LINKLIST L、INTローカル、ElemType&E) { 場合(<ローカル1 + ||ローカル>(L->データ1 )) { のprintf(" 無効な入力の\ n "); // 判断插入的未知是否有效 返すFALSE。 } LINKLIST P = L。 以下のために(int型 i = 1 ; iは<ローカル; iは++ ) { P = P-> 次。 } LINKLIST S = 新しいlノード。 S - >データ=E、 S - > P-次に=> 次に、 P - >次に= S; L - >データ++; // 。挿入長さプラス1つの リターンTRUE; }
4.ノードの削除
1ステータスdeleteList(LINKLIST L、int型のPOS) 2 { 3 であれば(POS < 1 || POS> L-> データ) 4 { 5 のprintf(" 無効な入力の\ n " ); 6 リターンFALSE; 7 } 8 9 LINKLISTのP = L。 10 のために(int型 I = 1 ; <; I ++はPOSを私は) 11 { 12 、P = P-> 次。 13 } 14 15 p型>次= P->ネクスト> 次; 16 L-> data-- 。 17 18 リターンTRUE。 19 20 }
値の単一のリスト
1 INT GETVAL(LINKLIST L、int型のPOS) 2 { 3。 IF(POS < 1。 L-> || POS> データ) 4。 { 5。 のprintf(" N- \無効INPUT "); // 妥当見つける位置決意 。6 リターン 0 ; 7 } 8。 9。 LINKLIST P = L; 10 用(INT I = 1 ; Iは、<POSを私は++ ) 11 { 12は P = P-> ;次に 13れます } 14 15 リターンのp->ネクストデータ>; // 値を見つけるために戻った 16 }
6.単一のリストを探します
1 int型GetPosも(LINKLIST L、ElemTypeヴァル) 2 { 3 LINKLISTのP = L。 4 のための(int型 I = 1を iが++; I <= L->データ) 5 { 6 P = P-> 次。 7 場合(P->データ== ヴァル) 8 { 9 リターン I。 // 返回值的位置 10 } 11 12 なら(I == L-> データ) 13 { 14 リターン 0。 // 見つからない場合は、0を返し 15 } 16 } 17 }