C++結構體鏈表


struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
struct ListNode 有它的內部數據“val”,它是一個int,因為它是一個列表節點,它包含一個指向下一個ListNode“next”的指針。
ListNode(int x): val(x), next(NULL){} 初始化當前節點為x,指針為空。

參考博文:https://www.cnblogs.com/songweiren/p/8735398.html

PNode CreateList(void) {
    int len;    //    用於定義鏈表長度
    int val;    //    用於存放節點數值
    PNode PHead = (PNode)malloc(sizeof(Node));    //    創建分配一個頭節點內存空間
    //頭節點相當於鏈表的哨兵,不存放數據,指向首節點(第一個節點)
    if (PHead == NULL)    //    判斷是否分配成功
    {
        printf("空間分配失敗 \n");
        exit(-1);
    }
    //指向鏈表尾部的指針,個人認為PTail是在棧空間上的,是一個輔助指針,用於連接新的節點
    PNode PTail = PHead;    //    鏈表的末尾節點,初始指向頭節點
    PTail->Next = NULL;    //    最后一個節點指針置為空
    printf("請輸入節點個數:");
    scanf("%d", &len);        //    輸入節點個數
    for (int i = 0; i < len; i++) {

        PNode pNew = (PNode)malloc(sizeof(Node));    //    分配一個新節點
        if (pNew == NULL) {
            printf("分配新節點失敗\n");
            exit(-1);
        }
        printf("請輸入第 %d 個節點的數據:", i + 1);
        scanf_s("%d", &val);    //    輸入鏈表節點的數據

        pNew->Element = val;    //    把數據賦值給節點數據域
        PTail->Next = pNew;    //    末尾節點指針指向下一個新節點,連接新的節點
        pNew->Next = NULL;        //    新節點指針指向為空
        PTail = pNew;    //    將新節點復制給末尾節點   ,將PTail指向尾節點    
    }
    printf("創建鏈表成功\n"
        );
    return PHead;    //    返回頭節點
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM