繁体   English   中英

链表Java实现的主要内容

[英]What is head in Linked List Java Implementation

我正在阅读“破解编码面试”,并且注意到下面的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中的“ this”通常是指当前实例。 那么,这两个有什么关系? 我确定我在这里缺少什么。 请帮忙!

每当为Node引用someNode someNode.appendToTail(x) ,它将创建一个数据值为x的新Node ,并将其附加到包含someNode的任何列表的someNode 如果someNode是列表的一部分,则它将成为两个节点列表的开头,而新节点为结尾。 如果someNode是较长列表的一部分,则新节点将是该列表的someNode

为此, appendToTail必须找到尾注,即next指针为null的尾注。 它使用this本身开始搜索。 如果它是列表的n.next = end; ,则将跳过该循环,因为nextnull ,并且n.next = end; 分配将具有next = end;的效果next = end; 如果列表中还有更多节点,则while循环将跳过它们,直到找到当前尾部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM