力扣第二题遇到问题
来源:5-2 测试你的链表程序
慕哥6157257
2021-05-16
波波老师,这里我只是想创建一个链表。为什么上面这种写法不奏效呢?process也是指针,为什么修改它对ans整体没有影响?
ListNode* ans = new ListNode(0);
ListNode* process = ans->next;
for (int i = 0; i < vec.size(); i++) {
process = new ListNode(vec[i]);
process = process->next;
}
process = nullptr;
/////////////////////////////////////////
ListNode* ans = new ListNode(0);
ListNode* process = ans;
for (int i = 0; i < vec.size(); i++) {
process->next = new ListNode(vec[i]);
process = process->next;
}
process->next = nullptr;
写回答
1回答
-
第一种写法:
precess = ans->next,也就是 process 指向一个空。
然后,在循环里,process = new ListNode,process 指向了一个新建的节点。注意,这个新建的节点和 ans 没有关系。
process = process->next,process 又指向空。
第二种写法:
process = ans,也就是 process 和 ans 指向同一个节点;
循环里,process->next = new ListNode,相当于 ans->next = new ListNode,也就是 ans 后面多了一个节点,新建的节点真正和 ans 连接上了。
这是一个非常重要的点,请一定仔细理解。理解了这一点,很多指针相关的问题都是类似的。
继续加油!:)
012021-05-16
相似问题