节点(和对象)在分配给彼此时如何实际工作

时间:2015-12-24 06:15:17

标签: java linked-list nodes

我正在尝试理解链接列表如何在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?

1 个答案:

答案 0 :(得分:1)

见:

tail = n;

表示tail指向n

head = tail;

由于现在都指向n,并且您在n旁边设置了尾部,因此您将head.next视为3。