簡體   English   中英

何時使用LinkedListNode與LinkedList

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM