Pascal/Turbo Pascal - PILA

 
Vista:

PILA

Publicado por Juan (83 intervenciones) el 14/08/2007 09:15:14
Que tal, hice este programa yo, el programa hace lo que quiero, pero no se si realmente esta bien aplicada la pila, es como que lo hice pero no entiendo bien su lógica todavía, medio raro no?, si hay algún error, o la pila tendría que aplicarse de otra manera diganme, aca está el código:

Program ejpila;

Type

tipoinfo=integer;
tipopila=^tiponodo;
tiponodo=record
info:tipoinfo;
sgte:tipopila;
end;
Tvec=array [1..100] of tipoinfo;

Procedure Meter(var pila:tipopila;valor:tipoinfo);

var ptrn:tipopila;

begin

new(ptrn);
ptrn^.info:=valor;
ptrn^.sgte:=pila;
pila:=ptrn

end;

Procedure Sacar(var pila:tipopila;var valor:tipoinfo);

var ptrn:tipopila;

begin

ptrn:=pila;
valor:=pila^.info;
pila:=pila^.sgte;
dispose(ptrn)

end;

var
pila:tipopila;
n,i:integer;
vec:tvec;

begin
pila:=nil;
writeln('¨Cuantos valores va a ingresar?');
readln(n);
for i:=1 to n do
begin
writeln('Ingrese un valor');
readln(vec[i]);
meter(pila,vec[i])
end;

writeln('Ahora va a ver los valores que se ingresaron de forma invertida');

while pila<>nil do
begin
sacar(pila,vec[i]);
writeln(vec[i]);
dec(i)
end;
readln
end.
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:PILA

Publicado por Marcelo (8 intervenciones) el 15/08/2007 03:41:56
Hola Juan.
El uso de la pila está bien aplicado, de todas formas no entiendo el vector, los datos que guardas allí no los procesas ni mostras y otra cosa, en ves de hacer:
sacar(pila,vec[i]);
writeln(vec[i]);
Quedaría mejor hacer de sacar una funcion que devuelve el valor y escribir:
writeln(sacar(pila));

Dijiste que no entendias bien la lógica, voy a intentar explicartela: una pila es una estructura de datos dinámica que inserta y elimina datos por la cima, es decir por arriba. Tiene una analogía con lo que llamamos pila en la vida cotidiana: una pila de platos, una pila de cartas, etc. En una pila de platos nadie intentaría sacar o meter un plato en el medio sino que lo haría por arriba.

Espero que te haya sido de ayuda.
Saludos,
Marcelo.
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