Java: 理解单链表的实现

Java: Understanding the Singly Linked List implementation

假设我正在尝试添加 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?
    } 

}
tail = node;

// 至此,TAIL和HEAD就不再相连了吧?

尾部是您添加的最后一个元素tail = node;更改旧尾部是正常的,在这种情况下,头部将与新尾部相连。

//当我们只更新尾部时,如何更新头部? 在第一次分配头部之后,我们在链表中进行的所有添加过程中它仍然相同

当您执行 tail = node 时,tail 引用将更新为 node 所引用的位置。 head 引用仍然与您第一次设置的相同。