単一リンクリストを作成する(ヘッドノードを作成する方法、ヘッド挿入メソッドの初期割り当て)

//キーボードで複数の整数を入力し、入力データと逆の順序でヘッドノードを持つ単一リンクリストを作成します(ヘッダーの挿入により単一リンクリストが作成されます)
#include <stdio.h> 
#include <stdlib.h> 

typedef struct Link { 
    int data; 
    struct Link * next; 
} link; 


// 
InitLink(link * head_node){ 
    head_node =(link *)malloc(sizeof(link)); //ヘッドノードを作成する
    head_node-> data = 0; //ヘッドノードデータフィールドの初期割り当て値は0 
    head_node-> next = NULL; 

    link * ptail = head_node; 

    //ヘッダー挿入割り当て
    printf( "リンクリストに逆の順序で保存するには、いくつかの値を入力してください:\ n"); 
    int num = 0; 
    while(num!= -1){// -1を入力して
        scanf を終了( "%d"、&num); 
        link * new_node =(link *)malloc(sizeof(link)); //新しいノードを申請する 
        new_node-> data = num; //新しい値を新しいノードに割り当てます
        new_node-> next = head_node; //新しいノードのポインタフィールドは最後のノードです 
        head_node = new_node; //新しいノードは最後のノードになります(ヘッドノード、ヘッドノードは後ろにあります)
        ptail = new_node; //テールポインターはこの新しいノードを
    指し、先に進みます
    } printf( "テールポインターが指す値は:%d \ n"、head_node-> next-> data); 
    // ptailを返す; //最後のノードを指しますテールポインターは
    return head_node; 
} 


//リンクリストのトラバース(逆順で確立され、順次トラバーサル)
void showLink(link * head_node){ 
    link * tmp = head_node-> next; //ヘッドノードの次のノードは最初のノードですノードはトラバースを開始し、終了フラグ-1の出力を回避しますが
    、(tmp!= NULL){ 
        // if(tmp-> data == -1){ 
        // break; //シーケンシャルトラバーサルの場合、終了フラグ-1は出力されません。コントロール、そうでなければ何も出力されません
        // 
        printf( "%d"、tmp-> data); 
        tmp = tmp-> next;
    } 
} 

void main(){
    link * myHeadNode = NULL; 
    myHeadNode = initLink(myHeadNode); //初期化されたヘッドノード
    printfを取得します( "リンクリストは逆順で確立されています:\ n"); 
    showLink(myHeadNode); 
}

0はヘッドノードの値であり、印刷することはできません。トラバース時にtmp-> data == 0にトラバースし、トラバースを終了するだけです。

おすすめ

転載: www.cnblogs.com/shanlu0000/p/12697537.html