2016-07-12 12 views
2

Ich habe Probleme mit diesem Problem das Verständnis der Codierung Interview Risse:Wann verwendet LinkedListNode vs LinkedList

:

Code über Duplikate aus einer unsortierten verknüpften Liste

Lösung zu entfernen,

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; } } 

Ich verstehe nicht, warum Sie eine LinkedListNode statt einer LinkedList übergeben. Wenn Sie die Duplikate aus einer verknüpften Liste löschen möchten, warum nehmen Sie nicht einfach die gesamte Liste auf und durchlaufen sie?

+3

Angenommen, "n" ist der Kopf der Liste, es gibt keinen Unterschied. – shmosel

+0

Mögliches Duplikat von [Was ist LinkedListNode in Java] (http://stackoverflow.com/questions/5374077/what-is-linkedlistnode-in-java) –

+0

Durch die Übergabe eines Knotens anstelle der gesamten Liste kann der Benutzer einen Start definieren Punkt (der Knoten, um an zu beginnen), anstatt die gesamte Liste zu tun. Ich weiß nicht, ob das irgendwo gebraucht wird. Wenn nicht, dann gibt es keinen großen Unterschied. –

Antwort

3

Wie der Name eine LinkedList vorschlagen, so wenn Sie den Startknoten haben, haben Sie die Liste. LinkedList ist eine Kette von verschiedenen Knoten in verschiedenen Speicherbereichen, nicht behandeln oder erwarten, dass es wie Array ist, das ein kontinuierlicher Raumklotz ist.

0

LinkedListNode Hier ist eine Klasse, die als

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); 

hier head Knoten (Daten = 1) ist der Kopf der verketteten Liste erstellt, die wir in deleteDups sind vorbei. In dieser Funktion werden wir mit next über die angegebene Liste iterieren.

+0

Eine andere Überlegung ist, dass ein solcher De-Duplicator beispielsweise in "Baum- oder Baum-ähnlichen" Situationen verwendet werden könnte, in denen Sie irgendwie * Rekursion verwenden könnten. * Es ist jedoch eine ziemlich willkürliche Entscheidung. Sie könnten diese Funktion in beide Richtungen korrekt schreiben. –