簡體   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