<b>const</b> N = 100;
<b>type</b> rodzaj = (pełny, pusty);
Eltab = record
case rodzaj of
pełny: (d:T)
pusty: (nast:integer)
end;
Str = record
T:array[1..N] of Eltab;
pierwszy:integer;
end;
Inicjalizacja T, funkcja NewT i procedura DisposeT:
<b>procedure</b> InitT(var S:Str);
//wszystkie pola ustawiamy na puste, nast wskazują na następne pole lub zero; pierwszy staje się równy 1
<b>var</b> i:integer;
<b>begin</b>
<b>for</b> i:=1 <b>to</b> N <b>do</b> S.T[i].nast:=(i+1) mod (N+1);
S.pierwszy:=1;
<b>end</b>;
Koszt czasowy: liniowy względem N
Koszt pamięciowy: stały
<b>function</b> NewT(var S:Str; var nowy:integer):boolean;
//nowy to indeks któregoś z dotychczas pustych pól w S.T; jeśli takich nie ma, to New będzie miało wartość false
<b>begin</b>
<b>if</b> S.pierwszy = 0 <b>then</b>
New:=false
<b>else</b> <b>begin</b>
New:=true;
nowy:=S.pierwszy;
S.pierwszy:=S.T[S.pierwszy].nast;
<b>end</b>;
<b>end</b>;
Koszt czasowy: stały
Koszt pamięciowy: stały
<b>procedure</b> DisposeT(var S:Str; d:integer);
//zwalniamy indeks d w tablicy S.T
<b>begin</b>
S.T[d].nast:=S.pierwszy;
S.pierwszy:=d;
<b>end</b>;
Koszt czasowy: stały
Koszt pamięciowy: stały