Sobes.tech
Back to questions
Junior — Middle
73

Какие шаги необходимо предпринять для реализации структуры данных типа хэш-таблица?

Answer from AI

sobes.tech AI

Для реализации структуры данных хэш-таблица необходимо выполнить следующие шаги:

  1. Выбор хэш-функции — функция, которая преобразует ключ в индекс массива.
  2. Создание массива (бакетов) — основная структура для хранения элементов.
  3. Обработка коллизий — ситуации, когда разные ключи дают одинаковый индекс. Обычно используют:
    • цепочки (chaining) — в каждом бакете хранится список элементов;
    • открытая адресация — поиск следующей свободной ячейки.
  4. Методы вставки, поиска и удаления — реализовать операции с учетом хэш-функции и коллизий.

Пример простой реализации с цепочками на Python:

class HashTable:
    def __init__(self, size=10):
        self.size = size
        self.buckets = [[] for _ in range(size)]

    def _hash(self, key):
        return hash(key) % self.size

    def insert(self, key, value):
        index = self._hash(key)
        bucket = self.buckets[index]
        for i, (k, v) in enumerate(bucket):
            if k == key:
                bucket[i] = (key, value)
                return
        bucket.append((key, value))

    def get(self, key):
        index = self._hash(key)
        bucket = self.buckets[index]
        for k, v in bucket:
            if k == key:
                return v
        return None

    def remove(self, key):
        index = self._hash(key)
        bucket = self.buckets[index]
        for i, (k, _) in enumerate(bucket):
            if k == key:
                del bucket[i]
                return

Так реализуется базовая хэш-таблица с обработкой коллизий через цепочки.