繁体   English   中英

Java中反转链表混乱

[英]Reversing Linked List Confusion in Java

在 Java 中反转链表时,我很难理解特定的代码行。方法如下:

public static ListNode reverseList(ListNode head)
{
    ListNode prev = null;

    while(head != null)
    {
        ListNode nextNode = head.next;
        head.next = prev;

        prev = head;
        head = nextNode;
    }

    return prev;
}

我遇到的麻烦是行head.next = prev; . 当发生这种情况时,我假设 nextNode 的值也会改变,因为它也指向 head.next。 然而,它仍然是一样的。 我知道这与 object 参考文献有关,但我不确定。

这让我感到困惑,因为如果我通过将一个对象指向另一个对象来创建 2 个 ListNode 对象,就像这样:

    ListNode test = new ListNode(5);

    ListNode test2 = test;

并修改“test”对象的 val 并将其从“test2”打印出来,我得到了相同的精确值,如下所示:

    test.val = 8;

    System.out.println(test2.val); // this also prints out 8

一些图片以获得更好的插图

这里head、node1和nextNode是一个object

在此处输入图像描述

如图所示,headNext 和 nextNode 指向 node1。 headNext不是 object 而只是引用 node1。

next headNext指向prev。 注意 nextNode 仍然指向 node1

在此处输入图像描述

对于第二个示例,在创建值为 5 的 listNode test后,test2 被分配并指向测试 object。因此,对测试值的任何更改也会反映到 test2

在此处输入图像描述

希望对理解有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM