节点(和对象)在相互分配时实际如何工作



我试图理解链表在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。

相关内容

  • 没有找到相关文章

最新更新