Pascal/Turbo Pascal - borrar nodos de lista encadenada

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:borrar nodos de lista encadenada

Publicado por chacra (1 intervención) el 26/06/2008 19:17:45
usa recursion...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar nodos de lista encadenada

Publicado por Santiago (1 intervención) el 14/11/2008 23:41:29
Hola..que tal, tendrias que probar de modularizar un toque el problema, fijate que podes hacer un procedimiento que pasado un puntero, te elimine un nodo apuntado por el mismo de la lista..y otro procedure que valla invocando al anterior hasta que la lista se vacie...cualquier cosa agregame al msn y te doy una mano...un abrazo, suerte...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

borrar nodos de lista encadenada

Publicado por juan M (1 intervención) el 23/11/2016 04:19:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure eliminar_tolosa(var p:lista);
 
var
	pant,q:lista;
 
procedure eliminar (VAR pant:lista,q:lista);
 
begin
if pant <>nil
 then
[begin
pant^.psig:=q^.psig;
		end
	else
		begin
			p:=q^.psig;
		end;
dispose(q);
end;
 
begin
repeat
pant:=nil;
q:=p;
while (q<>nil) and (q^.localidad<>'tolosa') do // aca busco el puntero que tenga la misma info que la buscada 
	begin
		pant:=q;
		q:=q^.psig;
	end;
 
if (q<>nil)
	then
		eliminar (pant,q);
until (q=nil);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar