program ZasobnikDynamicky; {realizace zasobniku celych cisel linearnim spojovym seznamem} type Uk = ^Uzel; Uzel = record Info: integer; Dalsi: Uk end; var Z: Uk; procedure InicZasob(var Z: Uk); {inicializace prazdneho zasobniku} begin Z := nil end; procedure Error; {chybna prace se zasobnikem - pokus odebrat cislo z prazdneho zasobniku} begin writeln('Chyba na zasobniku!') end; procedure VlozZasob(var Z: Uk; X: integer); {pridani jednoho cisla do zasobniku} var P: Uk; {pomocny ukazatel} begin new(P); P^.Info := X; P^.Dalsi := Z; Z := P end; function VezmiZasob(var Z: Uk): integer; {vyjmuti jednoho cisla ze zasobniku} var P: Uk; {pomocny ukazatel} begin if Z = nil then Error {zasobnik prazdny, prvek nelze odebrat} else begin P := Z; Z := Z^.Dalsi; VezmiZasob := P^.Info; dispose(P) end end; begin InicZasob(Z); VlozZasob(Z,1); VlozZasob(Z,2); writeln(VezmiZasob(Z)); VlozZasob(Z,3); writeln(VezmiZasob(Z)); writeln(VezmiZasob(Z)); end.