我能想到的一种方法是反转列表然后阅读它。但这涉及更改不好的列表。
或者我可以复制列表然后反转它,但这会使用额外的 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);
}