1. 程式人生 > 其它 >C++ 建立連結串列

C++ 建立連結串列

技術標籤:C++c++單鏈表

本文旨在解決兩個問題:

1、如何寫一個建立連結串列函式

2、為什麼對於單個節點必須要new,而不能使用&

1、如何寫一個建立連結串列函式

程式碼如下

    ListNode* createListNode(vector<int> input) {
        ListNode dummy = ListNode(-1);
        ListNode* pre = &dummy;
        for(auto &value:input){
            pre->next = new ListNode(value);
            pre = pre->next;
        }
        return dummy.next;
    }

2、為什麼對於單個節點必須要new,而不能使用&

在建立dummy節點時,並沒有使用new,而是使用了取址符&。一開始的想法在for迴圈中也使用&,但在實際應用中發現,在for迴圈中使用&,每次建立的節點都是同一個地址。換而言之,連結串列的節點一直只有一個。

下面的程式印證了這一結果

    ListNode* createListNode(vector<int> input) {
        ListNode dummy = ListNode(-1);
        ListNode dummy1 = ListNode(-1);
        cout << "dummy的地址:"<< &dummy << endl;
        cout << "dummy1的地址"<< &dummy1 << endl;
        ListNode* pre = &dummy;
        cout << "迴圈體中每個節點的地址:" << endl;
        for(auto &value:input){
            pre->next = &ListNode(value);
            pre = pre->next;
            cout << pre << " ";
        }
        cout << "endl";
        return dummy.next;
    }