{ Terreno Antonio mat.9714216 }
unit
   coda_lst;

interface

uses
   listeric;
type
   tipo_coda=  record
                  fronte,retro: tipo_lista
               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);

begin
   C.fronte:=nil;
end;

function inserisci_retro(x: tipo_elemento;var C: tipo_coda): boolean;

begin
   if (vuota(C)) then
      begin
         new(C.fronte);
    C.retro:= C.fronte
      end
   else
      begin
         new(C.retro^.next);
    C.retro:=C.retro^.next
      end;
   C.retro^.element:=x;
   C.retro^.next:=nil;
   inserisci_retro:=true
end;

function estrai_fronte(var x: tipo_elemento;var C: tipo_coda): boolean;

begin
   if vuota(C) then
      estrai_fronte:= false
   else
      begin
         x:= C.fronte^.element;
    writeln('elemento estratto -> ',x);
    C.fronte:= C.fronte^.next;
    estrai_fronte:= true
      end
end;

function piena(C: tipo_coda): boolean;

begin
   piena:= false
end;

function vuota(C: tipo_coda): boolean;

begin
   vuota:=(C.fronte = nil)
end;

procedure visualizza_stato(C: tipo_coda);

begin
   stampa_lista(C.fronte);
end;

end.