Drucken Sie einfach verknüpfte Liste in umgekehrter Reihenfolge
Okay, das war die bonus-Frage in CMPS 280 s-test an der southeastern Louisiana Univ. Drucken Sie einfach verknüpfte Liste in umgekehrter in drei Linien. Irgendwelche Ideen?
InformationsquelleAutor Anjil Dhamala | 2014-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
C Umsetzung des bonus-Frage, in der drei Linien:
ReversePrint
sollteif head == NULL
. Ansonsten bekommen SieSEGFAULT
wenn KopfNULL
und Sie überprüfen, obhead->next
istNULL
Danke, behoben.
Sieht gut aus jetzt, +1
Übrigens, sollten Sie auch initialisiert Speicher für die
struct nodes
bevor Sie versuchen, das hinzufügen von Daten zu Ihnen.if(head == NULL) return;
kann einfach geschrieben werden alsif (!head)return;
InformationsquelleAutor syntagma
Wenn Sie berechtigt sind, zu verwenden, zu einem anderen Daten-Struktur, dann verwenden Sie einen Stack.
Schritt 1: Durchlaufen Sie die verknüpfte Liste aus dem head-Knoten und setzen Sie den Schlüssel in den stack, bis zum letzten Knoten. Dies dauert O(n) Zeit.
Schritt 2 : Pop-Elemente aus dem Stapel. Dies dauert O(1) Zeit.
Daher wird der code
InformationsquelleAutor Nishit
In der Regel, wenn Sie um Hilfe bittet, SO sollte man immer versuchen, das problem selbst zuerst. Dann, wenn Sie stecken bleiben, kommen hier mit dem, was Sie bisher getan haben und zeigen deutlich, was Ihr problem ist, maximieren Sie Ihre Chancen, Hilfe zu bekommen.
Wie zu Fragen, ist eine gute Frage, die auf SO
Jedoch, da es in der Vergangenheit auch-Prüfung Frage und meine Antwort nicht helfen, Sie zu betrügen,:), hier ist pseudo-code, wie Sie es tun können rekursiv:
InformationsquelleAutor nem035
Unten sind die verschiedenen Möglichkeiten, es zu tun. Der vollständige Quellcode kann auf gefunden, werden die hyperlinks unten.
1) Drucken mit extra Speicher : https://www.geeksforgeeks.org/print-reverse-linked-list-using-stack/
2) Drucken mit Rekursion : https://www.geeksforgeeks.org/print-reverse-of-a-linked-list-without-actually-reversing/
3) Druck durch ändern der ursprünglichen Liste - also in Erster Umkehrung der Liste und drucken Sie dann aus starten.
Source-Code für die Umkehrung Liste : https://www.geeksforgeeks.org/reverse-a-linked-list/
4) Druck ohne Verwendung von zusätzlichen Speicherplatz oder ändern der ursprünglichen Liste : https://www.geeksforgeeks.org/print-reverse-linked-list-without-extra-space-modifications/
5) Drucken mit Carriage return ("r") : https://www.geeksforgeeks.org/an-interesting-method-to-print-reverse-of-a-linked-list/
InformationsquelleAutor AnV
Unten ist mein iterative Java-Lösung ohne stacks. Ich nehme an, die Raum-Komplexität ist immer noch O(n), da die Länge der
StringBuilder
wächst Linear mit der Anzahl der Elemente in der Liste. Jedoch, wir können Weg, ohne Verwendung einer stack (entweder die Datenstruktur oder die rekursive Aufruf-stack), von denen keines notwendig ist, wenn alles was wir tun ist, drucken Sie die Elemente auf die Konsole. Auch die iterative stack-Lösungen mit zwei Schleifen in der Erwägung, dass diese Methode erfordert nur einen. Schließlich ist die Zeit-Komplexität ist immer noch O(n), die ist viel besser als die quadratischen Algorithmus von Geeks für Geeks verwiesen, die in einer anderen Antwort.InformationsquelleAutor Oleksiy