program FrontaDynamicky; {realizace fronty linearnim spojovym seznamem} type Uk = ^Uzel; Uzel = record Info: integer; Dalsi: Uk end; TypFr = record Zacatek: Uk; {zacatek fronty} Konec: Uk; {posledni prvek fronty} end; var F: TypFr; {vlastni reprezentace fronty} procedure InicFronta(var F: TypFr); {inicializace prazdne fronty} begin F.Zacatek := nil end; procedure Error; begin writeln('Chyba ve fronte!') end; procedure VlozFronta(var F: TypFr; X: integer); {pridani jednoho cisla do fronty} var P: Uk; {pomocny ukazatel} begin with F do begin new(P); P^.Info := X; P^.Dalsi := nil; if Zacatek = nil then Zacatek := P {bude to jediny prvek ve fronte} else {zaradit za dosud posledni prvek} Konec^.Dalsi := P; Konec := P {novy konec fronty} end end; function VezmiFronta(var F: TypFr): integer; {vyjmuti jednoho cisla z fronty} var P: Uk; {pomocny ukazatel} begin with F do begin if Zacatek = nil then Error {fronta prazdna, prvek nelze odebrat} else begin P := Zacatek; Zacatek := Zacatek^.Dalsi; VezmiFronta := P^.Info; dispose(P) end end end; begin InicFronta(F); VlozFronta(F,1); VlozFronta(F,2); writeln(VezmiFronta(F)); VlozFronta(F,3); writeln(VezmiFronta(F)); writeln(VezmiFronta(F)); end.