unit fronta; {typ tab implementuje frontu integeru delky nejvyse MAX } interface const MAX = 100; type index = 1..MAX; Prvek = integer; pole = array [index] of integer; ptab = ^tab; tab = record A : pole; D : 0..Max; {delka zaplnene casti tabulky} end; function isempty(T:tab):boolean; {testuje prazdnost} function isfull(T:tab):boolean; {testuje plnost} procedure init(var T:tab); {inicializuje prazdnou tabulku} procedure pridej(var Kam:tab; Co:integer); {smi se volat jen na tabulku, ktera neni plna, pridava prvek Co na konec tabulky} function uber(var Odkud:tab):integer; {smi se volat jen na neprazdnou tabulku, ubere prvni prvek tabulky a vrati jeho hodnotu} implementation function isempty(T:tab):boolean; begin isempty:= T.D=0; end; function isfull(T:tab):boolean; begin isfull:= T.D=Max; end; procedure init(var T:tab); begin T.D:=0; end; procedure pridej(var Kam:tab; Co:integer); begin if isfull(Kam) then {chyba} else with Kam do begin inc(D); A[D]:=CO; end; end; function uber(var Odkud:tab):integer; var I,J:integer; begin if isempty(Odkud) then {chyba} else with Odkud do begin uber:=A[1]; for I:=2 to D do A[I]:=A[I+1]; D:=D-1; end; end; end.