{ Terreno Antonio mat.9714216 }
unit
pila_vet;
interface
uses
vettori;
type
tipo_pila= record
a: tipo_array;
testa: integer;
end;
procedure crea(var P: tipo_pila);
function push(x: tipo_elemento;var P: tipo_pila): boolean;
function pop(var x: tipo_elemento;var P: tipo_pila): boolean;
function piena(P: tipo_pila): boolean;
function vuota(P: tipo_pila): boolean;
procedure visualizza_stato(P: tipo_pila);
implementation
procedure crea(var P: tipo_pila);
begin
P.testa:=min-1;
end;
function push(x: tipo_elemento;var P: tipo_pila): boolean;
begin
with P do
if piena(P) then
begin
writeln('owerflow error');
push:= false
end
else
begin
testa:=testa+1;
A[testa]:=x;
push:=true
end
end;
function pop(var x: tipo_elemento;var P: tipo_pila): boolean;
begin
with P do
if vuota(P) then
begin
writeln('pila vuota! ->underflow error');
pop:= false
end
else
begin
x:=A[testa];
writeln('elemento estratto -> ',x);
testa:=testa-1;
pop:= true
end
end;
function piena(P: tipo_pila): boolean;
begin
piena:= (P.testa = max)
end;
function vuota(P: tipo_pila): boolean;
begin
vuota:= (P.testa = min-1)
end;
procedure visualizza_stato(P: tipo_pila);
var
i: integer;
begin
if vuota(P) then
writeln('pila vuota')
else
for i:= P.testa downto min do
writeln(P.A[i])
end;
end.