[英]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;
,则将跳过该循环,因为next
为null
,并且n.next = end;
分配将具有next = end;
的效果next = end;
。 如果列表中还有更多节点,则while循环将跳过它们,直到找到当前尾部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.