71
ОСНОВЫ АЛГОРИТМОВ И СТРУКТУР ДАННЫХ
- далее любая информация, связанная с данным именем
};
Основная таблица (m –размер таблицы):
struct name *tbl[m]; // сама таблица.
Функция поиска / включения.
//char *z – включаемый или искомый элемент;
//int ins – 0 – поиск, 1 – включение;
name* look(char *z, int ins)
{
name *n;
int h=
0
; // h – функция;
char* cp = z; // указатель на символ;
/* вычисление h - функции*/
h%=m;
//search in sub-table
for (n=tbl[h]; n; n=n -> next)
{
if (strcmp(z, n->key) ==
0
) return n;
}
if(!ins) error(“имя не найдено”);
n =(name*) malloc(sizeof(name));
n->key = (char*) malloc(sizeof(z));
strcpy(n->key, z);
n->next = tbl[h];
tbl[h] = n;
return n;
}
Метод хеширования в различных реализациях является самым
производительным и практичным среди всех методов поиска, но только при
условии хорошего выбора хэш-функции, а хорошо выбрать хэш-функцию не
всегда удаётся.
1...,63,64,65,66,67,68,69,70,71,72 74,75,76,77,78,79,80,81,82,83,...106