[英]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.