Ordenar Listas Enlazadas
Publicado por Pascal (1 intervención) el 20/05/2008 09:21:16
He visto que muchos andan solicitando procedimientos para ordenar listas enlazadas, pero solo haciendo uso de los punteros. Este es mi humilde aporte.
Procedure Ordenar (Var Ini: Nodo);
Var
I,C:integer;
AAnt,Ant,Sig: Nodo;
Begin
For I:= 1 to Cantidad(Ini) do
Begin
Ant:=Ini;
C:=0;
While (Ant^.psig<>nil) do
Begin
C:=C+1;
Sig:=Ant^.Psig;
If (Ant^.info<Sig^.info) then
Begin
Ant^.psig:=Sig^.psig;
Sig^.psig:=Ant;
If C=1 then Ini:=Sig
Else
Begin
Anterior (Ini,Ant,AAnt);
AAnt^.Psig:= Sig;
End;
End
Else
Begin
Ant:=Ant^.psig;
End
End;
End;
End;
Procedure Ordenar (Var Ini: Nodo);
Var
I,C:integer;
AAnt,Ant,Sig: Nodo;
Begin
For I:= 1 to Cantidad(Ini) do
Begin
Ant:=Ini;
C:=0;
While (Ant^.psig<>nil) do
Begin
C:=C+1;
Sig:=Ant^.Psig;
If (Ant^.info<Sig^.info) then
Begin
Ant^.psig:=Sig^.psig;
Sig^.psig:=Ant;
If C=1 then Ini:=Sig
Else
Begin
Anterior (Ini,Ant,AAnt);
AAnt^.Psig:= Sig;
End;
End
Else
Begin
Ant:=Ant^.psig;
End
End;
End;
End;
Valora esta pregunta


0