1 -> 2 -> 3 -> null
在循环的第一次迭代中,节点1的下一个点为节点2。我正在使用以下代码来扭转列表:
class ListNode {
int val;
ListNode next;
ListNode(int val) { this.val = val; }
}
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode temp = head;
while (temp != null) {
ListNode front = temp.next; // Save next node (which is node 2 initially)
temp.next = prev; // Set node1.next to null (disconnect node1 from node2)
prev = temp;
temp = front;
}
return prev;
}
}
我期望发生的事情: 最初,节点1的下一个点是节点2。 在第一次迭代中,当我设置
node1.next = null
时,我希望节点2本身会受到某种影响 - 它的下一个指针应变为null,或者节点2本身应该变为null。 实际发生了什么: 设置
node1.next = null
后,列表变为:
1 -> null
2 -> 3 -> null
示例带有前指针: 让我用一个相关的例子来解释这种困惑:当我执行
front = temp.next
时,这将保存对下一个节点的引用(即,在第一个迭代中,正面将指向节点2,因为温度是节点1)。这是有效的,而节点2现在是正面参考。
,当我表演
temp.next = prev
时; (即设置
node1.next = null
),只有节点1的下一个指针才更新。它不会影响节点2,即使在
front = temp.next
步骤中,节点1的下一个指向节点2。
为什么当我设置
node1.next = null
时,只有节点1的下一个指针已更新,而不是节点2的下一个指针(或节点2本身)?
我不明白: 为什么设置
node1.next = null
还不影响Node1.next指向(即节点2)的节点?
如果保存时正面可以正确保存对节点2的引用,为什么节点2本身不会在设置temp.next
?时变为null(或将其下一个指针修改)。
看您的ListNode类。请注意,每个节点都有自己的值和下一个值,但没有一个值。当您更改1的下一个节点的值时,您不会更改节点2的任何值。