Reverse Singlelink List Java
Kann mir jemand sagen, warum mein code dosent Arbeit? Ich will umkehren, eine einfach verkettete Liste in java: Dies ist die Methode (funktioniert nicht richtig)
public void reverseList(){
Node before = null;
Node tmp = head;
Node next = tmp.next;
while(tmp != null){
if(next == null)
return;
tmp.next = before;
before = tmp;
tmp = next;
next = next.next;
}
}
- Und das ist die Knoten-Klasse:
public class Node{
public int data;
public Node next;
public Node(int data, Node next){
this.data = data;
this.next = next;
}
}
Auf Eingang 4->3->2->1 ich habe Ausgabe 4. Ich gedebuggt und es setzt Pointer korrekt, aber trotzdem habe ich nicht bekommen, warum gibt es nur 4.
InformationsquelleAutor der Frage sammy333 | 2014-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also, was passiert, wenn tmp == null?
Sie hat es fast, aber.
Oder in schöner (?) Benennung:
ASCII-Kunst:
InformationsquelleAutor der Antwort Joop Eggen
InformationsquelleAutor der Antwort Ranjeet
Die Methode für die Umkehrung einer verknüpften Liste ist, wie unten;
Reverse-Methode
Drei Referenzen sind erforderlich, um das umkehren einer Liste: precurreingehende
Umkehren einen Knoten, den Sie haben, zu speichern prePrevious element, so dass Sie verwenden können, die einfache stament;
Umkehr des aktuellen Elements in der Richtung. Jedoch Durchlaufen Sie die Liste, die Sie haben, zu speichern eingehende element vor der Ausführung der Anweisung oben, weil, wie die Umkehrung des aktuellen Elements nächste Referenz, die Sie nicht wissen, die eingehende element mehr, das ist, warum eine Dritte Referenz benötigt.
Den demo-code ist wie folgt;
LinkedList-Beispiel Klasse
Test-Code
Ausgabe
InformationsquelleAutor der Antwort Levent Divilioglu
Wenn das nicht Hausaufgaben machen, und Sie tun dies "manuell" über Zweck, dann würde ich empfehlen, mit
Sammlungen.reverse() gibt void zurück, und Ihre Liste ist Umgekehrt, nachdem Sie den Anruf.
InformationsquelleAutor der Antwort Oliver Hausler
Wir haben drei Knoten vorherigen,aktuellen und nächsten.
InformationsquelleAutor der Antwort Sathesh Balakrishnan Manohar
InformationsquelleAutor der Antwort Sean Paul
Kenne ich die rekursive Lösung ist nicht optimal, aber wollte nur hinzufügen, hier:
InformationsquelleAutor der Antwort Jose Cifuentes
Ich verstehe es nicht... warum nicht, dies zu tun :
Ich finde das einfacher.
InformationsquelleAutor der Antwort Manov
Eine elegantere Lösung wäre die Verwendung von Rekursion
InformationsquelleAutor der Antwort Shayno
}
InformationsquelleAutor der Antwort user2547616
Habe ich versucht den folgenden code und es funktioniert gut:
Im Grunde genommen eins nach dem anderen setzt es die nächste Zeiger von einem Knoten zum nächsten, zum nächsten Knoten, so dass vom nächsten ab alle Knoten sind mit an der Rückseite der Liste.
InformationsquelleAutor der Antwort shailendra1118
Ich glaube, dein problem ist, dass Ihr zunächst letztes element nächsten Attribut nicht geändert werden, weil von Ihrem Zustand
Ist am Anfang der Schleife.
Ich würde es verschieben, direkt nach tmp.nächste zugewiesen wurde:
InformationsquelleAutor der Antwort Pablo Francisco Pérez Hidalgo
Verwenden.
oder Java-Programm zu reverse-eine Einfach Verknüpfte Liste
InformationsquelleAutor der Antwort Shriram
InformationsquelleAutor der Antwort prashant chaudhary
Können Sie auch versuchen, diese
InformationsquelleAutor der Antwort Sankalp
public class SinglyLinkedListImpl {
}
InformationsquelleAutor der Antwort Shivanshu
InformationsquelleAutor der Antwort user5807826
InformationsquelleAutor der Antwort Armaan Singh Sekhon
Umkehren eine einfach verknüpfte Liste, die Sie sollten drei Knoten, topbeforeTop und AfterTop. Oben ist der header einfach verkettete Liste, daher beforeTop wäre null und afterTop wäre nächste element top und mit jeder iteration vorwärts beforeTop zugeordnet ist top und top zugeordnet ist afterTop(d.h. top.neben).
InformationsquelleAutor der Antwort bpjoshi
Mit Rekursion ist Es zu einfach :
InformationsquelleAutor der Antwort ritesh9984
InformationsquelleAutor der Antwort saurabh prakash
Verwenden Sie obige Funktion rückgängig einfach verkettete Liste.
InformationsquelleAutor der Antwort Aditya Parmar
prüfen Sie weitere details über die Komplexität der Analyse
http://javamicro.com/ref-card/DS-Algo/How-to-Reverse-Singly-Linked-List?
InformationsquelleAutor der Antwort jitendra
InformationsquelleAutor der Antwort Aman
InformationsquelleAutor der Antwort user7258708
Dies wird nützlich sein, für jede Art von collection-Objekt.
InformationsquelleAutor der Antwort user3782758