Один из способов, о котором я могу думать, - обратить вспять список, а затем прочитать его.
Но это связано с изменением списка, который является плохим.
ИЛИ Я могу сделать копию списка, а затем отменить его, но это использует дополнительную память O (n).
Есть ли лучший способ, который не использует дополнительную память и не изменяет список и не запускается в O (n) time
код с обратным соединением выглядит примерно так: С#
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);
}