力扣第二题遇到问题

来源: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回答

liuyubobobo

2021-05-16

第一种写法:

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 连接上了。


这是一个非常重要的点,请一定仔细理解。理解了这一点,很多指针相关的问题都是类似的。


继续加油!:)

0
1
慕哥6157257
非常感谢!
2021-05-16
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程