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
引用仍然与您第一次设置的相同。
假设我正在尝试添加 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
引用仍然与您第一次设置的相同。