私が考えることができる 1 つの方法は、リストを反転してから読み取ることです。しかし、これにはリストの変更が含まれますが、これは悪いことです。
または、リストのコピーを作成してから逆にすることもできますが、これには追加の O(n) メモリが使用されます。余分なメモリを使用せず、リストを変更せず、O(n) 時間で実行されるより良い方法はありますか
逆リンク リストのコードは、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;
}
再帰的な解決策は
void ReadBackWard (Node n)
{
if (n==null)
return;
else
ReadBackward(n.Next);
Console.WriteLine(n.Data);
}