RE:Urgente!!!! ordenar una lista enlazada doblemen
Hola de nuevo, puedes hacer lo que te dije en tu pregunta anterior, solo tienes que usar algun metodo de ordenamiento tradicional, (de burbuja..)
Pero en este caso puedes hacer dos cosas, la primera que es la mas sencilla es tener un registro temporal para meter ahi los datos mientras haces el cambio ( suponiendo que tienes los registros 1, 2 y 3, y quieres ordenarlo; suponiendo que la ordenacion quedara 2, 1 y 3, simplemente comparas 1 con 2, el menor o mayor, segun sea el caso, va primero, asi que puedes copiar toda la informacion del registro 2 al registro temporal, copias la informacion del 1 al 2, y del temporal al 1, asi te quedaran volteados).
O puedes cambiar las ligas (esto es mas complicado asi que te recomiendo que uses el primero).
suponiendo que tienes estos datos:
type
puntero=^registro;
registro=record
nombre,direccion,telefono:string[20];
siguiente,anterior:puntero;
end;
var punt,temp,list:puntero;
begin
punt:=list^.siguiente; {suponiendo que list apunta al primer registro de la lista, a punt le das la direccion del segundo registro}
if(punt<>nil)then {por si acaso no hay mas registros}
begin
if(punt^.nombre < list^.nombre) then
begin
temp^:=punt^; {toda la informacion del registro al que apunta punt se copiara a temp, todo, nombre, direccion, telefono y los punteros}
punt^:=list^;
list^:=temp^;
end;
end.
y asi haces un ciclo donde compare todos los registros y los intercambie.
Espero te haya servido.