本文旨在解决两个问题:
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;
}