Un método que se me ocurre es invertir la lista y luego leerla. Pero esto implica cambiar la lista que es mala.
O puedo hacer una copia de la lista y luego invertirla, pero esto usa memoria O (n) adicional. ¿Hay algún método mejor que no utiliza memoria adicional y no modifica la lista y se ejecuta en O (n) tiempo¿Cómo leer una lista unida de forma simple al revés?
invertir el código de lista enlazada es algo como esto en 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;
}
recursiva solución es
void ReadBackWard (Node n)
{
if (n==null)
return;
else
ReadBackward(n.Next);
Console.WriteLine(n.Data);
}
La recursividad es su amigo –
@Neil: ¿Puede sugerir algunos pseudo código utilizando la recursividad – Learner
Pero recursividad usa O (n) de memoria –