二重リンクリストのヘッドノードを作成し、データノード
あなたが作成した後、単一のリストになりますし、二重にリンクされたリストは、単にノードへのポインタよりも前で、また、取得することは非常に簡単です。
ヘッドノードを作成します。
#include <iostreamの> 使用して 名前空間STD; 構造体ノード { int型A、 構造体ノード*次; // 次のノードポインタをポイントする 構造体ノード*プレ; // ノードへのポインタ }; int型のmain() { ノード *ヘッド; // ヘッドノードポインタをポイントする ノードは* P; P = 新しいノード; // ここで新しいmalloc関数によって置き換えられ、メモリ空間を割り当てるために使用することができる P->次に= NULL; // データなしノード、したがって、すべてのありますNULL P->予備= NULL; ヘッド = P; リターン(0 )。 }
データノードを作成する2つの方法、1はヘッドノードの背後に作成されるたびがありますが、他は前のノード以下の各時間データを作成しています
初見
ボイド node_creat(ノード*ヘッド、INT N-) { ノード * P; INT I; のための(I = 1 ; I <、= N- I ++ ) { P = 新しい新規;ノード CIN >> P-> A; P - >次に=頭部> 次に、 ヘッド - >次に= P; IF(P->次に= NULL!) // これはノードのヘッダノード以下のデータか否かを判断すべきである P->ネクスト> = Pプリ; // もしLET新しく挿入されたノードへの事前のポインタ P-> =予備ヘッド; // ヘッドノードに予め新たに挿入されたノード } } // 時間はヘッドノードの背後にあるかどうかが決定される挿入された新しいノードが新しいデータノードを持っているので // 理由のp>次の!= NULLの代わりだから、頭部>次!= NULL // 前頭部理由>その隣には、P>次に割り当てられています
第2
ボイド node_creat(ノード*ヘッド、INT N-) { ノード * P、 ノード * Q; // 作成されたデータノードに各時点でQ Q = ヘッド; int型Iと、 のための(I = 1 ; I <= N; ++ I ) { P = 新しい新しいノードと、 CIN >> P-> A; P - > = Q-次> 次に、 Q - >次に= P; P - >プリ= Q; Q = Q-> 次に; } }