Итак, вот актуальный вопрос (это для домашней работы):
Хеш-таблица - это структура данных, которая позволяет получать доступ к дате и манипулировать ею в постоянное время (O (1)). Массив хеш-таблицы должен быть инициализирован нулем во время создания хеш-таблицы, чтобы идентифицировать пустые ячейки. В большинстве случаев временное наказание огромно, особенно учитывая, что большинство ячеек никогда не будут прочитаны. Мы просим вас внедрить хеш-таблицу, которая обходит эту проблему за счет более тяжелой вставки, но все же в постоянное время. В целях выполнения этой домашней работы и для упрощения вашей работы мы предполагаем, что вы не можете удалять элементы в этой хэш-таблице.
В архиве этого домашнего задания вы найдете интерфейс хеш-таблицы, который вам нужно заполнить. Вы можете использовать функцию hashcode () из Java в качестве хеш-функции. Вам придется использовать векторную структуру данных из Java, чтобы обойти инициализацию, и вы должны сами найти, как это сделать. Вы можете вставлять элементы только в конце вектора, так что сложность все равно O (1).
Вот несколько фактов, которые следует учитывать:
В хеш-таблице, содержащей целые числа, таблица содержит числовые значения (но они не имеют никакого смысла).
В стеке вы не можете получить доступ к элементам через самый высокий элемент, но вы точно знаете, что все значения действительны. Кроме того, вы знаете индекс самого высокого элемента.
Используйте эти факты, чтобы обойти инициализацию хеш-таблицы. Таблица должна использовать линейное зондирование для устранения коллизий.
Также вот интерфейс, который мне нужно реализовать для этой домашней работы:
public interface NoInitHashTable<E>
{
public void insert(E e);
public boolean contains(E e);
public void rehash();
public int nextPrime(int n);
public boolean isPrime(int n);
}
Я уже реализовал nextPrime и isPrime (я не думаю, что они отличаются от обычной хеш-таблицы). Три других мне нужно выяснить.
Я много думал об этом и обсуждал это с моим товарищем по команде, но я действительно не могу ничего найти. Мне нужно только знать основной принцип, как его реализовать, я могу справиться с кодированием.
tl; dr Мне нужно реализовать хеш-таблицу массива, которая работает без инициализации массива нулем в начале. Вставка должна быть сделана в постоянное время. Мне нужно только знать основной принцип, как это сделать.