Java:理解SinglyLinkedList实现



考虑我正在尝试添加10、20&30.当我添加第一个节点10时,HEAD将为空。此时,HEAD和TAIL都将指向同一节点,即10。现在,当添加第二个节点20时,我们正在更新指向节点20的下一个TAIL。由于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时,HEAD是如何更新的?在头的第一次分配之后,在我们在链表中进行的所有添加过程中,它仍然是一样的

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

相关内容

  • 没有找到相关文章

最新更新