2017-07-10 2 views
0

Ich habe versucht herauszufinden, wie die Reihenfolge einer doppelt verknüpften Liste umzukehren. Ich habe vor kurzem einen Account auf hackerrank gemacht und das war mein 10. Problem. Es dauerte eine Stunde, um die Lösung herauszufinden (Ich benutzte Stift und Papier und versuchte oft ) und schließlich ging es als richtig. Danach sah ich einige Antworten eingereicht einige andere Leute. Ihr Code war sehr klein in der Länge im Vergleich zu mir oder Sie denken, meine Antwort ist auch in Ordnung. Ich habe niemanden zu fragen, also kam ich hierher ... Ich fühle mich dumm, wenn ich das sehe.Kann ich es in Zukunft verbessern ?? (verzeihen Sie mir, wenn Sie denken, das ist eine dumme Frage)Doppelt verknüpfte Liste

Node Reverse(Node head) { 
    Node prevNode = null; 
    Node NextNode = null; 
    Node m = head; 
    Node upComingNode = null; 
    Node temp = head; 
    if(head == null){ 
     return head; 
    } 
    else{ 
     while(temp!=null){ 
      NextNode = temp.next; 
      temp.next = prevNode; 
      m.prev = upComingNode; 
      prevNode = temp; 
      upComingNode = prevNode.next; 
      m = temp; 
      temp = NextNode; 
     } 
     head = prevNode; 
    } 
    return head; 


} 
+0

Scheint wie Sie die richtige Idee ... obwohl der Code ein bisschen chaotisch ist. Sie können auch hier nach einer klaren Antwort suchen: http://www.geeksforgeeks.org/reverse-a-doubly-linked-list/ – JensV

+0

Bitte fügen Sie ein Tag der von Ihnen verwendeten Programmiersprache hinzu. – Yonlif

+0

Dieser Code ist in Java geschrieben – amitP

Antwort

0

Ich bin nicht sicher, welche Sprache in dem Sie arbeiten, aber eine doppelt verknüpfte Liste, die Sie in Kürze zu umkehren, Sie möchten Ihren nächsten tauschen und prev Knoten für jeden Knoten. Dies kann ziemlich kurz gemacht werden, und der Pseudo-Code ist unten:

while(currNode != tail){ 
    currNode.nextNode = tempNode 
    currNode.nextNode = currNode.prevNode 
    currNode.prevNode = tempNode 
    currNode = currNode.prevNode 
} 

Beachten Sie, dass wir die nächsten Knoten zu durchlaufen auf als vorherigen Knoten gesetzt, da der vorherige Knoten tatsächlich wird nun auf den nächsten Knoten zeigt, dass wir machte den Schalter.

Verwandte Themen