我正在尝试理解链接列表如何在Java中工作但是我很困惑Java跟踪head.next(参见代码示例)。
Node类(嵌套)和构造函数:
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);
}
假设item为2,item2为3,item3为4,则显示以下打印结果:
head.next.data = 3
tail.next.data = 3
head.next.data = 3
tail.next.data = 4
为什么head.next.data在未初始化时设置为3,为什么在尾部更改后它仍保持3?
答案 0 :(得分:1)
见:
tail = n;
表示tail
指向n
。
head = tail;
由于现在都指向n
,并且您在n
旁边设置了尾部,因此您将head.next
视为3。