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