二重リンクリスト(A)

二重リンクリストのヘッドノードを作成し、データノード

あなたが作成した後、単一のリストになりますし、二重にリンクされたリストは、単にノードへのポインタよりも前で、また、取得することは非常に簡単です。

ヘッドノードを作成します。

#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-> 次に; 
    } 
}

 

おすすめ

転載: www.cnblogs.com/hzb1224/p/11401801.html