RE:Urgente!!!!!! recorrer una lista hacia atras
Me imagino que es una lista doblemente ligada (obviamente con punteros), pero no dices si es lineal o circular.
Bueno, cuando tu recorres una lista hacia adelante haces esto no? (suponiendo que es una lista doblemente ligada LINEAL):
type {declaracion de variables}
puntero = ^registro;
registro= record
nombre:string[15];
siguiente:puntero; {apunta al siguiente registro}
anterior:puntero; {apunta al registro anterior}
end;
var punt,list:puntero;
begin
punt=list; {suponiendo que list es el puntero que tienes para manejar el inicio de la lista}
{recorrer hacia adelante e imprimir nombres:}
while(punt<>nil)do {mientras no sea fin de la lista}
begin
write(punt^.nombre);
punt:=punt^.siguiente; {le das a punt la direccion de memoria del siguiente registro}
end;
ahora, para recorrerla hacia atras, suponiendo que estas en el ultimo registro de la lista, haces esto:
{con las mismas variables}
begin
...
{aqui mandas a punt al final, al ultimo registro}
...
while(punt<>nil)do
begin
write(punt^.nombre);
punt:=punt^.anterior; {lo mandas al registro anterior hasta que llegue al inicio de la lista}
end;
para poder mandarlo al final de la lista, simplemente recorre el puntero hasta el final, como en el primer ejemplo que te puse, nada mas sin imprimir el nombre.
Espero que te haya ayudado, si tienes otra duda, o si esta no era tu duda, puedes escribirme.
Saludos
Cristina