const N = 100;
type rodzaj = (napis, liczba)
Dane = record
case co:rodzaj of
napis: (s:string)
liczba: (l:liczba)
end;
Eltab = record
klucz:integer;
case co:rodzaj of
napis: (wsk:^string)
liczba: (l:liczba)
end;
var T: array[0..N] of Eltab
Teraz dwie procedury:Napisz funkcję znajdującą w zadanej tablicy A typu array[1..N] of integer, N > 0, maksymalną sumę segmentu (spójnego fragmentu tablicy). Przyjmujemy, że segment pusty ma sumę 0.
procedure Wstaw(klucz: integer; var d: Dane);
//wstawiamy dane z d do tablicy T na pierwsze wolne miejsce, zaczynając od indeksu klucz mod (N+1)
//zakładamy, że są wolne miejsca w tablicy T
var k:integer;
begin
k:=klucz mod (N+1);
while T[k].klucz <> -1 do k:=(k+1) mod (N+1);
T[k].klucz:=klucz;
T[k].co:=d.co;
case d.co of
napis: New(T[k].wsk); T[k].wsk^:=d.s;
liczba: T[k].l:=d.l
end;
end;
Koszt czasowy: liniowy względem N
Koszt pamięciowy: stały
function Daj(klucz: integer; var d: Dane):boolean;
//pobieramy liczbę lub napis z tablicy T skojarzonych z kluczem klucz
//zakładamy, że są wolne miejsca w tablicy T
var i:integer;
begin
k:=klucz mod (N+1);
while T[k].klucz <> klucz and T[k].klucz <> -1 do k:=(k+1) mod (N+1);
if T[k].klucz = -1 then
Daj:=false
else begin
Daj:=true;
d.co:=T[k].co;
case d.co of
napis: d.s:=T[k].wsk^;
liczba: d.l:=T[k].l;
end;
end;
end;
Koszt czasowy: liniowy względem N
Koszt pamięciowy: stały