Показать сообщение отдельно
  #2  
Старый 16.10.2012, 21:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

И в чем проблема?
Код:
function Hash(S : String; HashSize : Integer) : Integer;
var
  Sm : Int64;
begin
  Sm := 0;
  For I := 1 To Length(S-1) Do
    Sm := (Sm + Ord(S[i])) * 31;
  Result := (Sm + Ord(S[Length(S)])) mod HashSize;
end;
Далее создаешь массив. Добавление - вычисление хэша (т.е. получение индекса) и помещение в нужную ячейку данных. Ну тут еще коллизии надо разрешить, но это делается просто сдвигом по массиву. Поиск аналогично. С удалением сложнее. Там надо делать спец признак, иначе есть возможность потерять некоторые строки.
Ответить с цитированием