
- •Лабораторные работы по программированию "Структуры и алгоритмы обработки данных"
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Методические указания по выполнению задания (окончание)
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Литература
- •Хранение данных в файлах
- •Простая организация данных
- •Ускорение операций с файлами
- •Хешированные файлы
- •Хешированные файлы (окончание)
- •Индексированные файлы
- •Индексированные файлы (окончание)
- •Несортированные файлы с плотным индексом
- •Внешние деревья поиска
- •Разветвленные деревья поиска
- •Создание пустого б-дерева
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (окончание)
- •Сравнение методов
- •Формат атд
- •Формат атд (окончание)
- •Вариант 8:
- •Атд "Хеш-таблица с цепочками коллизий"
- •Атд "Хеш-таблица с цепочками коллизий" (окончание)
- •Атд "Хеш-таблица с открытой адресацией"
- •Атд "Хеш-таблица с открытой адресацией" (окончание)
- •Атд "Итератор"
- •Описание методики тестирования хеш-функции (определение статистики c2)
- •Описание хеш-функций
- •Результаты тестирования хеш-функции
- •Описание методики тестирования трудоемкости операций
- •Описание методики тестирования трудоемкости операций (окончание)
- •Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
- •Литература
Вариант 8:
Тип ключа - 12-значное натуральное число.
Метод хеширования - свёртка, комбинированная с выбором цифр.
Метод разрешения коллизий - квадратичный.
Атд "Хеш-таблица с цепочками коллизий"
Хеш-таблица с цепочками коллизий основана на STL контейнере vector, элементами которого являются STL контейнеры типа list, представляющие собой структуры данных для цепочек коллизий. Размер массива вычисляется в конструкторе класса в зависимости от типа хеширования, при выбранном в работе методе хеширования (свёртка, комбинированная с выбором цифр) размер массива должен быть равен степени числа 10. Вставка элемента в таблицу осуществляется путём преобразования ключа в индекс таблицы и последующей вставки элемента в выбранный список (в конец списка).
Поиск и удаление подобны вставке - сначала вычисляется индекс элемента в массиве (при помощи хеш-функции) после чего происходит удаление или поиск в нужном списке.
Данные:
Параметры: Нулевой элемент таблицы
Структура данных: STL контейнер - vector элементов типа STL list
Операции:
Конструктор: Вход: предполагаемое количество ключей Предусловия: нет Процесс: Вычисление размера таблицы, очистка хеш-таблицы Постусловия: Пустая таблица Выход: нет
Деструктор: Вход: нет Предусловия: нет Процесс: нет Постусловия: нет Выход: нет
Опрос размера таблицы: Вход: Нет Предусловия: нет Процесс: Вызов vector<>::size() Постусловия: нет Выход: размер таблицы
Очистка таблицы: Вход: нет Предусловия: нет Процесс: Очистка таблицы Постусловия: Пустая таблица Выход: нет
Проверка таблицы на пустоту: Вход: Нет Предусловия: нет Процесс: Проверка длин всех списков в таблице Постусловия: нет Выход: true если ни один список не содержит элементов, false если хотя бы один список содержит один элемент
Поиск элемента с заданным ключом: Вход: Ключ элемента Предусловия: Таблица не пуста, нужный ключ есть в таблице Процесс: Поиск элемента в таблице Постусловия: нет Выход: Пара ключ-значение либо нулевой элемент таблицы если не выполнено предусловие
Включение нового элемента с заданным ключом: Вход: Пара ключ, значение Предусловия: нет Процесс: Вставка элемента в таблицу Постусловия: Таблица с увеличенным на один количеством элементов Выход: Текущий ключ, -1, если не выполнено постусловие
Атд "Хеш-таблица с цепочками коллизий" (окончание)
Удаление элемента с заданным ключом: Вход: Ключ элемента Предусловия: Таблица не пуста, элемент с нужным ключом находится в таблице Процесс: Удаление элемента Постусловия: Таблица с уменьшенным на один размером Выход: нет
Поиск первого элемента в таблице: Вход: нет Предусловия: Таблица не пуста Процесс: Поиск первого элемента Постусловия: нет Выход: Ключ первого элемента в таблице либо -1, если элементов не найдено
Поиск следующего элемента: Вход: Ключ элемента, для которого ищется следующий Предусловия: Ключ содержится в таблице Процесс: Поиск следующего Постусловия: нет Выход: Ключ следующего элемента