C++ 建立連結串列
阿新 • • 發佈:2021-01-09
本文旨在解決兩個問題:
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; }