[英]When to use LinkedListNode vs LinkedList
我在破解編碼面試時很難理解這個問題:
編寫代碼以從未排序的鏈表中刪除重復項
解:
public static void deleteDups(LinkedListNode n){
Hashtable table = new Hashtable();
LinkedListNode previous = null;
while(n != null ){
if(table.containsKey(n.data)) {
previous.next = n.next;
} else{
table.put(n.data, true);
previous = n;
}
n = n.next;
}
}
我不明白為什么您傳入一個LinkedListNode而不是一個LinkedList。 如果要從鏈表中刪除公話,為什么不直接進入並遍歷整個列表呢?
顧名思義,它是一個LinkedList
,因此,如果您有起始Node,那么您將擁有列表。 LinkedList
只是不同內存空間中不同節點的鏈,請勿將其視為或期望像數組那樣連續,它是連續的空間塊。
這里LinkedListNode是一個類
public LinkedListNode{
int data;
LinkedListNode next;
public LinkedListNode(int data){
this.data = data;
next = null;
}
}
LinkedListNode head = new LinkedListNode(1);
LinkedListNode node1 = new LinkedListNode(2);
LinkedListNode node2 = new LinkedListNode(3);
head.next = node1;
node1.next = node2;
//1->2-3
deleteDups(head);
這里head
node(data = 1)是我們在deleteDups中傳遞的已創建鏈表的頭。 在此函數中,我們使用next遍歷給定列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.