リニアテーブル - リスト

基本操作:
書式#include
<iostreamの> 使用して 名前空間はstdを、 typedefは構造体の lノード*のリスト。 構造体lノード{ int型データ、 次のリスト; }。 構造体のlノードL; int型の長さ(リストPTRL)// 求表长 { リストP = PTRL。 int型 J = 0 ; 一方、(P){ P = P-> 次。 J ++ ; } 戻りJ。 } リストFindKth(int型K、リストPTRL)// 按K的查找 { リストP = PTRL。 int型 I = 1 ; 一方(iは<Kを&& P!= NULL) { P = P-> 次。 I ++ ; } もし(I == K)リターンP。 それ以外 の戻りNULL; } リスト検索(INTの X、リストPTRL)// 按值查找 { リストP = PTRL。 一方、(P = NULL && P! - >データ= X) { P= P-> 次。 } 戻りP。 } リストの挿入(int型 X、int型 I、リストPTRL)// 插入操作 { リストP、S。 もし(I == 1 { S =(一覧)はmallocはsizeof構造体lノード))。 S - >データ= X; S - >次= PTRL。 リターン秒; } P = FindKth(I - 1 、PTRL)。 もし(P == NULL) { 裁判所未満 << " 参数私错误" << てendl; リターンNULL; } { S =(一覧)はmallocはsizeof構造体lノード))。 S - >データ= X; S - >次= P-> 次。 P - >次=のS; 返すPTRLを。 } } リストの削除(int型I、リストPTRL) { リストP、S。 もし(Iの== 1 { S = PTRL; // 最初のノードへのSポイント のIF(!PTRL = NULL) { PTRL = PtrL-> ;次に } それ以外の リターンNULL; 無料(S); // リリースはノードの削除 復帰PTRLを; } P = FindKth(I - 1 、PTRL); IF(P == NULL) { COUTが << " このノードが存在しない" << ENDL; 戻りNULL; } そう IF(P->次に==NULL) { COUT << " 不在" << ENDL; 戻りNULL; } そうでなければ { S = P->次に、// 削除するSノードである P->次に= S-> 次に、 フリー(S ); を返す; PTRL } } // 一般リスト のtypedef 構造体 GNODE * のGList、 ストラクトGNODE { int型のタグ; // 0は、ノードが単一の要素であることを示し、表1は、一般表す 連合{ int型データを、 のGListのsubList; } UGegion; のGList次に; }; / * 複数の二重リンクリストの代わりに、複数の木のリストは、複数のリストを記憶するために使用することができる 唯一の非スパース行列の行0の要素が行コル列が値座標座標直交リストメモリストアを 行ポインタ(カーソル右)列ポインタ(ポインタダウン)カウンターパートは同じ列を着ます * /

 

おすすめ

転載: www.cnblogs.com/h694879357/p/11521921.html