<<
>>

4.5 Коды для хеш-таблиц

typedef int T; /* type of item to be sorted */

#define compEQ(a,b) (a == b)

typedef struct Node_ {

struct Node_ *next; /* next node */

T data; /* data stored in node */

} Node;

typedef int hashTableIndex;

Node **hashTable;

int hashTableSize;

hashTableIndex hash(T data) {

/***********************************

* hash function applied to data *

***********************************/

return (data % hashTableSize);

}

Node *insertNode(T data) {

Node *p, *p0;

hashTableIndex bucket;

/************************************************

* allocate node for data and insert in table *

************************************************/

/* insert node at beginning of list */

bucket = hash(data);

if ((p = malloc(sizeof(Node))) == 0) {

fprintf (stderr, "out of memory (insertNode)\n");

exit(1);

}

p0 = hashTable[bucket];

hashTable[bucket] = p;

p->next = p0;

p->data = data;

return p;

}

void deleteNode(T data) {

Node *p0, *p;

hashTableIndex bucket;

/********************************************

* delete node containing data from table *

********************************************/

/* find node */

p0 = 0;

bucket = hash(data);

p = hashTable[bucket];

while (p && !compEQ(p->data, data)) {

p0 = p;

p = p->next;

}

if (!p) return;

/* p designates node to delete, remove it from list */

if (p0)

/* not first node, p0 points to previous node */

p0->next = p->next;

else

/* first node on chain */

hashTable[bucket] = p->next;

free (p);

}

Node *findNode (T data) {

Node *p;

/*******************************

* find node containing data *

*******************************/

p = hashTable[hash(data)];

while (p && !compEQ(p->data, data))

p = p->next;

return p;

}

<< | >>
Источник: Томас Ниман. Сортировка и поиск: Рецептурный справочник. 1995

Еще по теме 4.5 Коды для хеш-таблиц:

  1. 3.1 Хеш-таблицы
  2. Таблица 8 – Таблица для SWOT-анализа
  3. 4.1 Коды для сортировки вставками
  4. 4.2 Коды для сортировки Шелла
  5. 4.6 Коды для бинарных деревьев
  6. 4.8 Коды для разделенных списков
  7. 4.7 Коды для красно-черных деревьев
  8. 4.3 Коды для быстрого поиска (функции Quicksort)
  9. 4.4 Коды для стандартной реализации быстрого поиска
  10. 8. Пользуйтесь таблицами и списками для выделения пунктов в статье.
  11. Додаток 1 Таблиця для розрахунку основного обміну чоловіків
  12. Додаток 2 Таблиця для розрахунку основного обміну жінок
  13. Приложение К Таблицы для преобразования координат в смежную зону
  14. 3.4. Множественные сравнения в таблицах для неальтернативных вопросов. Программа Typology Tables
  15. Исследование цветового зрения по полихроматическим таблицам Е. Б. Рабкина и пороговым таблицам Е. Н. Юстовой
  16. 1.5.3 Построение доверительного интервала для дисперсии. Таблицы распределения хи-квадрат.
  17. Таблицы и графики дисконтирования Натуральные логарифмы Статистические таблицы Формулы производны
  18. Приложение Д Таблица для перевода делений угломера в градусы и минуты