listcell = record
left : listlink;
right : listlink;
element : mapcell;
end;
list = ^listcell;
listposition = listlink;
bucket = list;
map = array[0..buckets] of bucket;
function maphash(d : domain):integer;
{+--- on entry - d exists and is a single character
| on exit - maphash contains a number between 1 and maphashbuckets
+-----------------------------------------------------------------------}
begin
maphash := ord(d) mod buckets;
end;
function compare(e1,e2 : listelement):integer;
{+--- on entry - e1 and e2 are transfered in for a comparison
| on exit - compare returns +1 iff e1 > e2
| 0 iff e1 = e2
| -1 iff e1 < e2
+----------------------------------------------------------------------}
begin {compare}
if e1.d > e2.d then compare := 1
else if e1.d < e2.d then compare := -1
else compare := 0;
end; {compare}
procedure print(var out:text; e:listelement);
{+--- on entry - e is contained in the list and is ready for output
| on exit - e has been written to the corresponding out file
+------------------------------------------------------------------------}
begin {print}
writeln (out,e.d:4,' 'e.r:4);
end; {print}