Linked List Java Implementation的主要内容是什么?

时间:2014-12-13 05:23:08

标签: java linked-list this nodes head

我正在阅读"破解编码面试"我注意到下面的代码用于Java中的链接列表实现。

class Node {
    Node next = null;
    int data;

    public Node (int d){
        data = d;
    }

    void appendToTail(int d){
        Node end = new Node(d);
        Node n = this;
        while(n.next != null){
            n = n.next;
        }
        n.next = end;
    }
}

Node n = this; 这一行让我非常困惑。 我们应该从列表的头部开始,直到列表的末尾。 "这"在java中通常是指当前实例。 那么,这两者有什么关系呢? 我确定我在这里遗漏了一些东西。请帮忙!

1 个答案:

答案 0 :(得分:1)

每当Node引用someNodesomeNode.appendToTail(x)被调用时,它都会创建一个数据值为Node的新x,并将其附加到任何列表的尾部都包含someNode。如果someNode不是列表的一部分,那么它将成为双节点列表的头部,新节点为尾部。如果someNode是较长列表的一部分,则新节点将成为该列表的尾部。

为此,appendToTail必须找到尾注,即null next指针。它使用this自行开始搜索。如果它是其列表的尾部,则将跳过循环,因为nextnulln.next = end;赋值将具有next = end;的效果。如果列表中有更多节点,则while循环将跳过它们,直到找到当前尾部。