Один из методов, о котором я могу думать, - это обратить вспять список, а затем прочитать его. Но это связано с изменением плохого списка.
ИЛИ Я могу сделать копию списка, а затем перевернуть его, но это использует дополнительную память 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);
}
Рекурсия ваш друг – 2009-07-12 19:38:27
@Neil: Можете ли вы предложить какой-то псевдо-код, используя рекурсию – Learner
Но рекурсии использует O (N) памяти –