考慮我正在嘗試添加 10、20 和 30。當我添加第一個節點 10 時,HEAD 將為空。此時,HEAD 和 TAIL 將指向同一個節點,即 10。現在當添加第二個節點 20 時,我們正在更新 TAIL 的 next 指向節點 20。由于 HEAD 和 TAIL 共享相同的參考,因此 HEAD 也會更新. 到這里都很酷。在此之后,我們正在更新尾部參考。現在 HEAD 和 TAIL 不會共享公共參考,對嗎?但是當我們添加第三個節點時 HEAD 是如何更新的?我很困惑理解它......
public class LinkedList {
private class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
}
private Node head;
private Node tail;
public void add(int data) {
var node = new Node(data);
if (head == null) {
head = tail = node;
return;
}
tail.next = node;
tail = node; // At this point, TAIL and HEAD are no longer connected, right? Still how HEAD gets updated when we are updating only TAIL?
}
}
uj5u.com熱心網友回復:
tail = node;
// 此時,TAIL 和 HEAD 不再連接了,對吧?
尾部是您添加的最后一個元素,tail = node;更改舊尾部是正常的,在這種情況下,頭部將與新尾部連接。
//當我們只更新 TAIL 時,HEAD 是如何更新的?在頭的第一次分配之后,在我們在鏈表中進行的所有添加程序中它仍然相同
uj5u.com熱心網友回復:
當您這樣做時tail = node,tail參考將更新node為所指的位置。該head基準仍是一樣的你把它的第一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359134.html
上一篇:如何在不重復或存盤的情況下從整數范圍中選擇第n個隨機整數?[復制]
下一篇:沒有重復的兩個鏈表的交集
