{ Terreno Antonio mat.9714216 }
unit
coda_vet;
interface
uses
vettori;
type
tipo_coda= record
a: tipo_array;
fronte,retro: integer;
lungh: integer;
end;
procedure crea(var C: tipo_coda);
function inserisci_retro(x: tipo_elemento;var C: tipo_coda): boolean;
function estrai_fronte(var x: tipo_elemento;var C: tipo_coda): boolean;
function piena(C: tipo_coda): boolean;
function vuota(C: tipo_coda): boolean;
procedure visualizza_stato(C: tipo_coda);
implementation
procedure crea(var C: tipo_coda);
{ crea coda vuota }
begin
C.fronte:=0;
C.retro:=0;
C.lungh:=0
end;
function inserisci_retro(x: tipo_elemento;var C: tipo_coda): boolean;
begin
with C do
if piena(C) then
begin
writeln('owerflow error');
inserisci_retro:= false
end
else
begin
A[retro]:=x;
retro:= (retro+1) mod (max);
lungh:=lungh+1;
inserisci_retro:=true
end
end;
function estrai_fronte(var x: tipo_elemento;var C: tipo_coda): boolean;
begin
with C do
if vuota(C) then
begin
writeln('coda vuota! ->underflow error');
estrai_fronte:= false
end
else
begin
x:=A[fronte];
writeln('elemento estratto -> ',x);
fronte:=(fronte+1) mod (max);
lungh:= lungh-1;
estrai_fronte:= true
end
end;
function piena(C: tipo_coda): boolean;
begin
piena:= (C.lungh = max)
end;
function vuota(C: tipo_coda): boolean;
begin
vuota:= (C.lungh = 0)
end;
procedure visualizza_stato(C: tipo_coda);
var
i: integer;
begin
if vuota(C) then
writeln('coda vuota')
else
begin
write('coda-> ');
for i:=C.fronte to C.retro-1 do
write(C.a[i],' ');
writeln;
end
end;
end.