ВУЗ:
Составители:
Рубрика:
49
function Hash(x: DataType); integer;//хеш-функция
элемента x
procedure Include(x: DataType);
procedure Exclude(x: DataType);
procedure Contains(x: DataType): boolean;
end;
constructor HashTable.Create(nn: integer);
var i: integer;
begin
N:=nn;
GetMem(a,N*sizeof(List));
for i:=0 to N-1 do
a^[i]:=List.Create;
end;
destructor HashTable.Destroy;
var i: integer;
begin
for i:=0 to N-1 do
a^[i].Destroy;
FreeMem(a);
end;
function HashTable.Hash(x: integer); integer;
begin
Result:=x mod N;
end;
procedure HashTable.Include(x: integer);
begin
if not Has(x) then
a^[Hash(x)].AddLast(x);
end;
procedure HashTable.Exclude(x: integer);
begin
a^[Hash(x)].Remove(x);
end;
function HashTable.Contains(x: integer): boolean;
begin
Result:=a^[Hash(x)].Find(x);
end;
Отдельно рассмотрим вопрос о создании хорошей
хеш-функции для строко-
вого типа данных. Задача – не такая тривиальная, как может показаться на первый