Pascal/Turbo Pascal - AYUDA Listas con punteros

   
Vista:

AYUDA Listas con punteros

Publicado por Areshu (1 intervención) el 24/06/2009 11:57:36
Wenas tengo un problemilla con el tema de listas utilizando punteros en turbo pascal
supongamos que tengo que acer una lista(mas bien una cola) en la que se van añadiendo nodoos desde la cola y se quitan desde la cabeza (como cuando llegas a la cola del banco, te pones el ultimo y el primero cuando acaba se va). el caso es que con punteros me lio muxo y nose ni como empezar con esto. Si alguien puede exarme una mano...
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:AYUDA Listas con punteros

Publicado por juan (44 intervenciones) el 27/06/2009 14:17:29
no te desesperes es facil usa una lista doble , un puntero q es el principio y otro en el fin, eso dentro de un registro , para no perder la referencia , tenes que tenes un puntero anterior y uno siguiente. ahora te paso el .pas asi te das cuenta... cualquier duda avisen..

Program ListaDoble;
uses crt;
Type

Lista=^nodolistadoble;
nodolistadoble=record
dato:integer;
sig:Lista;
ant:Lista;
end;

Lista_doble=record
Pri:Lista;
ult:Lista;
end;

Procedure InsertarFinal(num:integer; Var P:Lista_doble);
var
aux:Lista;
begin
with p do begin
if(pri<>nil)then begin
new(ult^.sig);
aux:=ult;
ult:=ult^.sig;
ult^.dato:=num;
ult^.ant:=aux;
end
else begin
new(pri);
pri^.dato:=num;
ult:=pri;
ult^.ant:=nil;
end;
ult^.sig:=nil;
end;
end;

Procedure Imprimir(p:Lista_Doble);
var
i:integer;
aux:lista;
begin
i:=1;
aux:=p.ult;
writeln(' *** IMPRIME EN ORDEN ***');
while(p.pri<>nil)do begin
writeln('EL Producto Numero ',i,' Cuesta: ',p.pri^.dato );
p.pri:=p.pri^.sig;
i:=i+1;
end;
writeln;
readkey;
writeln('*** IMPRIME AL REVEZ ***');
i:=i-1;
while(aux<>nil)do begin
writeln('EL Producto Numero ',i,' Cuesta: ',aux^.dato );
aux:=aux^.ant;
i:=i-1;
end;
end;

{Programa Principal}
var
P:Lista_Doble;
num:integer;
begin
P.pri:=nil;
writeln('ingrese el numero a cargar: ');
readln(num);
while(num<>999)do begin
insertarFinal(num,p);
writeln('ingrese otro numero a cargar: ');
readln(num);
end;
Imprimir(p);
readkey;
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

RE:AYUDA Listas con punteros

Publicado por Mircia (1 intervención) el 06/07/2009 05:27:55
uses wincrt;
type
listaptr=^tiponodo;
tiponodo=record
nombre:string[20];
sigue:listaptr;
end;
var
cabeza,cola,extra,ptr:listaptr;
nomb:string[20];
begin
cabeza:=nil;
while nomb <> 'n' do
if cabeza=nil then
begin
new(cabeza);
write('Escriba un nombre o n para salir : ');
readln(nomb);
cabeza^.nombre:=nomb;
cola:=cabeza;
end
else
begin
new(extra);
write('Escriba un nombre o n para salir : ');
readln(nomb);
extra^.nombre:=nomb;
cola^.sigue:=extra;
cola:=extra;
end;
if cabeza <> nil then
cola^.sigue:=nil;
ptr:=cabeza;
while ptr<>nil do
begin
writeln(ptr^.nombre);
ptr:=ptr^.sigue;
end;
readln;
readln;
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