Pila Estatica con vector de numeros enteros (estructura LIFO (Last In First Out) , delphi 
Tuesday, July 31, 2012, 07:11 PM - Delphi
Pila Estatica con vector de numeros enteros (estructura LIFO (Last In First Out) )
Una pila es una estructura de datos en donde el primer dato almacenado es el ultimo en salir, en la vida real una pila puede explicarse como una pila de libros o platos donde se colocan uno encima de otro en el caso de querer obtener el primer libro es decir el que esta mas abajo en la pila de libros debemos desapilar todos los que estan mas arriba antes de poder alcanzarlo, por eso se dice que el primero en ser apilado es el ultimo en ser desapilado
Se dice que es ESTATICA por que tiene una tamaño definido es decir hay una cantidad limite o maxima de datos que podemos apilar





}
program PILA1int;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
Max:integer=10; //Constante para indicar el numero maximo de datos apilados
var
Pila: array[0..10] of Integer ;//Vector del tipo entero
Tope:integer=-1;//Esta variable apuntara a la posicion del ultimo dato apilado
Cantida:integer=0;//controla la cantidad de numero apilados

function Lleno():boolean; //encargada de avisarnos si la pilla esta llena
var L:boolean; //variables falso-verdadero
begin
if Tope<Max then //si tope es menor que MAX entonces
begin
L:=FALSE; //L es FALSO
end
else //si es mentira (Tope NO es menor que MAX)
begin
L:=TRUE; //L es VERDADERO
end;
RESULT:=L; //Como resultado la funcion devuelve el valor de L
end;

procedure Apilar(); //Procedimiento para añadir datos a la pila
var Que:integer;
begin
if Lleno() then //Preguntamos primero si la pila esta llena
begin
Writeln('La Pila esta llena'); //Si esta llena envia un mensaje y no apila
end
else //Si la pila NO esta llena
begin
write('Que dato? ');
Readln(Que);
Tope:=Tope+1; //El tope se elevara por lo q incrementamos esta variable
Pila[tope]:=Que;
Cantida:=Cantida+1; //Aumentamos un dato a la pila por lo q incrementamos el contador
Writeln('Dato Apilado'); //enviamos un mensaje de comprobacion
end;
end;
procedure MostrarTope; //Muestra el dato que esta en el tope de la pila
begin
if Cantida>0 then
begin
writeln('El dato del tope es ',Pila[Tope]);//Devolvemos el dato que esta en la direccion
//del vector donde apunta la variable TOPE
end
else
begin
writeln('La PILA esta vacia');
end;

end;
procedure DesApilar(); //Saca o desapila el dato que esta en el tope
begin
Cantida:=Cantida-1; //Disminuimos CANTIDAD en 1 (por q dasapilamos)
Tope:=Tope-1; //Disminuimos TOPE en 1 esto hace que el dato
//a donde apuntaba anteriormente TOPE sea ignorado
//y no sea necesario eliminarlo
end;

procedure MostrarPila(); //Para mostrar graficamente la pila
var I:integer; //Contador
begin
for I := Tope downto 0 do
writeln('{',Pila,'}');
end;



//---------------------------PROGRAMA PRINCIPAL
var
X:integer;
begin
repeat
Writeln('Escoja una opcion');
writeln('1:APILAR');
writeln('2:DESAPILAR');
writeln('3:MOSTRAR TOPE');
writeln('4;MOSTRAR PILA');
writeln('5:SALIR');
writeln('------------------------');
readln(x);
case X of
1:Apilar();
2:DesApilar;
3:MostrarTope;
4:MostrarPila;
5:Writeln('chau');
end;
until (x=5);
end.


descargar

pila

Comentarios

Agregar comentario

Rellene los campos de abajo para dejar su comentario.









Extras (Negrita / Cursiva / URL / Imagen):








En este blog está activada la moderación. Tu comentario requiere que los administradores lo aprueben antes de hacerse visible.