![](/img/trans.png)
[英]Trouble Understanding Objects and Modifying Variables of them in Linked List in Java
[英]Java referencing and modifying linked list
我對Java有點陌生,目前有一件事困擾着我一些有關引用的問題。
我有一個返回void
的方法。 我將鏈接列表傳遞給此方法。 還有另一個名為noDuplicateLL
鏈表變量,它引用相同的鏈表。 noDuplicateLL
跳過鏈接列表中的節點。
碼:
public static void removeDuplicate(LinkedListNode a) {
LinkedListNode noDuplicateLL = null;
if (a == null) {
//return null;
} else {
HashMap<Integer, Boolean> duplicateCheck = new HashMap<Integer, Boolean>();
while (a != null) {
// check in hashtable O(1)
if (duplicateCheck.containsKey(a.data)) {
noDuplicateLL.next = a.next;
} else {
noDuplicateLL = a;
duplicateCheck.put(a.data, true);
}
// update
a = a.next;
}
}
}
LinkedListNode a
遍歷整個列表。 LinkedListNode noDuplicateLL
停止不動,一旦a
達到null
。 因此,一旦完成此方法,兩個指針都指向列表中的其他位置,而不是最前面。
下面的方法從頭到尾打印在列表上。
public static void printLinkedList(LinkedListNode head) {
while (head != null) {
System.out.println(head.data);
head = head.next;
}
}
我的主要:
LinkedListNode LL = LinkedList.randomLinkedList(nodeVal);
removeDuplicate(LL);
printLinkedList(LL);
為什么輸出仍從開始打印時LL傳遞到方法結束鏈表的a
? 是因為a
僅指向鏈接列表中的節點,而LL
維護對鏈接列表前面的引用嗎?
LL --> some head node
// invoke method
// LL's value bound to parameter a
a --> some head node
// method executes
a --> head's next
a --> that next's next
...
a --> null
// method exits
LL
仍指向原始頭節點。
是因為a僅指向鏈接列表中的節點,而LL維護對鏈接列表前面的引用嗎?
是。 閱讀這個只要你能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.