Zásobník celých čísel:


type
  spoj = ^prvek;                 
  prvek = record
    hodnota: integer;
    dalsi: spoj;
  end;

var
  zasobnik: spoj;
  cislo: integer;

procedure Vytvor;
{ Vytvori zasobnik - inicializuje promennou predstavujici tento zasobnik }
begin
  zasobnik := nil;
end;

function Prazdny: boolean;
{ Jestlize v zasobniku nic neni, vraci true, pokud tam neco je, vraci false }
begin
  Prazdny := zasobnik=nil;
end;

procedure Pridej(x: integer);        { jiny nazev: PUSH }
{ Prida do zasobniku prvek s hodnotou x }
var
  pom: spoj;
begin
  New(pom);
  with pom^ do begin
    hodnota := x;
    dalsi := zasobnik;
  end;
  zasobnik := pom;
end;

procedure Odeber(var x: integer);    { jiny nazev: POP }
{ Vyjme ze zasobniku jeden prvek, jeho hodnotu preda v parametru x }
var
  pom: spoj;
begin
  if Prazdny then 
    writeln('Zasobnik je prazdny, nelze nic odebrat!')
  else begin
    x := zasobnik^.hodnota;
    pom := zasobnik;
    zasobnik := zasobnik^.dalsi;
    Dispose(pom);
  end;
end;


begin     { hlavni program }
  Vytvor;

  ... pracujeme

  while not Prazdny do Odeber(cislo);
end.