Escolar Documentos
Profissional Documentos
Cultura Documentos
datos
Operaciones sobre listas enlazadas
Todas las operaciones que se resumen a continuacin trabajan sobre una lista enlazada
de valores enteros cuyos nodos tienen la siguiente estructura.
type
// definicion del puntero a nodo
PNodo = ^Nodo;
// definicion del nodo
Nodo = record
v:integer;
sig:PNodo;
end;
aux p
aux^.sig <> nil
aux aux^.sig
aux^.sig nuevo
R
Agrega un elemento al final de la lista enlazada
R
Recorre la lista y muestra el valor contenido en cada nodo
procedure mostrar(p:PNodo);
var aux:PNodo;
begin
aux:=p;
while( aux<>nil ) do begin
writeln(aux^.v);
aux:=aux^.sig;
end;
end;
R
Recorre la lista y libera cada uno de sus nodos
R
Recorre la lista para determinar si contiene o no un valor determinado
p aux^.sig
dispose(aux)
R
Elimina el nodo que contiene un valor determinado
end;
if( aux<>nil ) then begin
if( ant<>nil ) then begin
ant^.sig:=aux^.sig;
end else begin
p:=aux^.sig;
end;
dispose(aux);
end;
end;
ant=nil
p nuevo
ant^.sig nuevo
nuevo^.sig aux
insertarOrdenado nuevo
R
Inserta un nodo cuyo valor respeta el criterio de precedencia de la lista
new(nuevo);
nuevo^.v:=x;
nuevo^.sig:=nil;
aux:=p;
ant:=nil;
while( (aux<>nil) and (aux^.v<=x) ) do begin
ant:=aux;
aux:=aux^.sig;
end;
if( ant=nil ) then begin
p:=nuevo;
end else begin
ant^.sig:=nuevo;
end;
nuevo^.sig:=aux;
insertarOrdenado:=nuevo;
end;
enc true
enc false
buscarEInsertarOrdenado r
R
Inserta un nodo cuyo valor en la lista ser nico
r:=buscar(p,x);
if( r= nil ) then begin
r:=insertarOrdenado(p,x);
enc:=false;
end else begin
enc:=true;
end;
buscarEInsertarOrdenado:=r;
end;