为什么不设置链接列表节点的下一个指向null的指针也会影响它指向的节点? 我试图扭转Java中的单一链接列表,但是我对参考过程中的参考过程感到困惑。具体来说,我不明白为什么要设置下一个p ...

问题描述 投票:0回答:0

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

节点2仍然不受影响,其下一个指针仍指向节点3。节点2本身并未无效。
我的混乱:
当我将Node 1的下一个指针设置为null时,为什么Node 2不会变为null?
我希望从节点2断开节点1也会以某种方式影响节点2(也许是通过将其下一个甚至无效的节点本身无效),但这并没有发生。
示例带有前指针:
让我用一个相关的例子来解释这种困惑:

当我执行
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的任何值。

    

java pointers linked-list singly-linked-list
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.