uses crt;
type Pzasobnik=^tzasobnik;
     Tzasobnik=record
       data:string;
       next:^Pzasobnik;
     end;

procedure ZasobnikInit(var z:Pzasobnik);
begin
     z:=nil;
end;

function ZasobnikEmpty(z:PZasobnik):boolean;
begin
     ZasobnikEmpty:=(z=nil);
end;

procedure ZasobnikPush(var z:Pzasobnik; co:string);
var nova:Pzasobnik;
begin
     new(nova);
     nova^.data:=co;
     nova^.next:=z;
     z:=nova;
end;

function ZasobnikPop(var z:Pzasobnik):string;
var stara:Pzasobnik;
begin
     if ZasobnikEmpty(z) then
        begin
             ZasobnikPop:='';
        end
     else
         begin
              ZasobnikPop:=z^.data;
              stara:=z;
              z:=z^.next;
              dispose(stara);
         end;
end;

var z: char;
    zas:Pzasobnik;

{main}
begin
repeat
clrscr;
writeln('Trtkal 2008 - http://fei.trtkal.net');
writeln('-----------------------------------');
begin
     ZasobnikInit(zas);
     ZasobnikPush(zas, 'Jedna');
     ZasobnikPush(zas, 'Dva');
     ZasobnikPush(zas, 'Tri');

     while not ZasobnikEmpty(zas) do
           writeln(ZasobnikPop(zas));

end;
writeln('-----------------------------------');
write('Opakovat a/n: ');readln(z);
until (z='n');
end.
