Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Методы обработки списков




Метод Insert вычисляет значение хеш-функции и ищет объект типа LinkedList, чтобы проверить, есть ли уже такой элемент данных в таблице или нет. Если есть, то Insert обновляет этот элемент данных, устанавливает на него указатель current и возвращает управление. Если такого элемента в таблице нет, Insert добавляет его в хвост списка, устанавливает на него указатель current и увеличивает размер списка.

template <class T>void HashTable<T>::Insert(const T& key){ // hashval - индекс блока (связанного списка) int hashval = int(hf(key) % numBuckets); // lst -- псевдоним для buckets[hashval]. Помогает обойтись без индексов LinkedList<T>& lst = buckets[hashval]; for (lst.Reset();!lst.EndOfList(); lst.Next()) // если ключ найден, обновить данные и выйти if (lst.Data() == key) { lst.Data() = key; current = &lst.Data(); return; } // данные, соответствующие этому ключу, не найдены. // вставить элемент в список lst.InsertRear(key); current = &lst.Data(); size++;}

 

Метод Find применяет хеш-функцию и просматривает указанный в результате список на предмет совпадения с входным параметром. Если совпадение обнаружено, метод копирует данные в key, устанавливает указатель current на соответствующий узел и возвращает True. В противном случае метод возвращает False.

template <class T>int HashTable<T>::Find(T& key){ // вычислить значение хеш-функции и установить lst // на начало соответствующего связанного списка int hashval = int(hf(key) % NumBuckets); LinkedList<T>& lst = buckets[hashval]; // просмотреть узлы связанного списка в поисках key for (lst.Reset();!lst.EndOfList(); lst.Next()) if (lst.Data() == key) { // если ключ совпал, получить данные, установить current и выйти key = lst.Data(); current = &lst.Data(); return 1; // вернуть TRUE } return 0; // иначе вернуть FALSE}

Метод Delete просматривает указанный список и удаляет узел, если совпадение произошло.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных