Eine Methode, die ich mir vorstellen kann, besteht darin, die Liste umzukehren und sie dann zu lesen. Aber das beinhaltet die Änderung der Liste, die schlecht ist.
ODER Ich kann eine Kopie der Liste machen und sie dann umkehren, aber das verwendet zusätzlichen O (n) Speicher. Gibt es eine bessere Methode, die keine zusätzlichen Speicher nicht verwendet und verändert nicht die Liste und läuft in O (n) ZeitWie liest man eine einfach verkettete Liste rückwärts?
Reverse-Linked-List-Code ist so etwas wie dies in C#
Void Reverse (Node head)
{
Node prev= null;
Node current = head;
Node nextNode = null;
while (current!=null)
{
nextNode = current.Next;
current.Next = prev;
prev=current;
current = nextNode;
}
head = prev;
}
rekursive Lösung ist
void ReadBackWard (Node n)
{
if (n==null)
return;
else
ReadBackward(n.Next);
Console.WriteLine(n.Data);
}
Rekursion ist dein Freund –
@Neil: Können Sie einige Pseudo-Code vorschlagen, mit Rekursion – Learner
Aber Rekursion verwendet O (n) Speicher –