borrar nodos de lista encadenada
Publicado por leandro (1 intervención) el 16/05/2008 23:41:36
bueno el problema q teno es para borrar varios nodos de una lista encadenada, tengo q eliminar a todos los empleados q vivan en tolosa, pero lo unico q puedo hacer es q se borre el primero jeje, los demas siguen vivitos y coleando les pongo el codigo:
procedure eliminar_tolosa(var p:lista);
var
q:lista;
pant:lista;
begin
pant:=nil;
q:=p;
while (q<>nil) and (q^.localidad<>'tolosa') do
begin
pant:=q;
q:=q^.psig;
end;
if (q<>nil) and (q^.localidad='tolosa') then
begin
if pant <>nil
begin
pant^.psig:=q^.psig;
end else begin
p:=q^.psig;
end;
dispose(q);
end;
end;
bueno ese es el codigo, la solucion q yo habia pensado era separar el primer while en 2, q entre a uno mientras no sea el final de la lista, y al otro q esta anidado adentro cuando el empleado no sea de tolosa, pero me tira un error en tiempo de ejecucion y estuve probando y no consegui nada, bueno les agradezco desde ya
procedure eliminar_tolosa(var p:lista);
var
q:lista;
pant:lista;
begin
pant:=nil;
q:=p;
while (q<>nil) and (q^.localidad<>'tolosa') do
begin
pant:=q;
q:=q^.psig;
end;
if (q<>nil) and (q^.localidad='tolosa') then
begin
if pant <>nil
begin
pant^.psig:=q^.psig;
end else begin
p:=q^.psig;
end;
dispose(q);
end;
end;
bueno ese es el codigo, la solucion q yo habia pensado era separar el primer while en 2, q entre a uno mientras no sea el final de la lista, y al otro q esta anidado adentro cuando el empleado no sea de tolosa, pero me tira un error en tiempo de ejecucion y estuve probando y no consegui nada, bueno les agradezco desde ya
Valora esta pregunta


0