我试图理解链表在Java中是如何工作的,但我对Java如何跟踪head.next感到困惑(请参阅代码示例)。
节点类(嵌套)和构造函数:
private static class Node<T>{
private T data;
private Node<T> next;
private Node(T data){
this.data = data;
}
}
方法:
void test(T item, T item2, T item3){
Node<T> n = new Node<T>(item);
Node<T> n2 = new Node<T>(item2);
Node<T> n3 = new Node<T>(item3);
tail = n;
head = tail;
tail.next = n2;
System.out.println("head.next.data = " + head.next.data);
System.out.println("tail.next.data = " + tail.next.data);
tail = n2;
tail.next = n3;
System.out.println("head.next.data = " + head.next.data);
System.out.println("tail.next.data = " + tail.next.data);
}
假设项为2,项2为3,项3为4,则会得到以下打印结果:
head.next.data = 3
tail.next.data = 3
head.next.data = 3
tail.next.data = 4
为什么head.next.data在未初始化时被设置为3,为什么即使在tail更改后它仍保持为3?
请参阅:
tail = n;
这意味着CCD_ 1指向CCD_。
head = tail;
由于现在两者都指向n
,并且在n
旁边设置tail,因此可以将head.next
看作3。