Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Андреев_Довгалюк_лабор_СДиА.doc
Скачиваний:
18
Добавлен:
26.03.2015
Размер:
527.87 Кб
Скачать
  1. Лабораторная работа № 6. Хеширование

Целью работы является изучение приемов создания и управления хеш-таблицами, а также методов закрытого и открытого хеширования.

    1. Задание на работу

Изучить способы применения и реализации хеш-функций.

Получить индивидуальное задание. Задание предусматривает реализацию функций, работающих с большими объемами данных. Например, сравнение строк в процессе поиска записи в базе данных.

Написать программу, реализующую индивидуальное задание.

    1. Пример индивидуального задания на работу

Составить алгоритм и программу, реализующие следующие действия над базой данных (БД), использующей для хранения данных закрытое (или открытое) хеширование.

Должны быть реализованы следующие команды:

Код команды

Команда

1

запись элемента в БД (создание)

2

просмотр содержимого БД

3

поиск элемента в БД

4

удаление элемента БД

Входные данные для работы программы поступают из файла «input.txt», результат записывается в файл «output.txt».

Входные данные

Первая строка входного файла содержит одно целочисленное значение N, задающее размер массива, используемого для создания базы данных (N<= 100).

Каждая из последующих строк содержит одну команду.

Формат команды: <код команды> <пробел> <элемент данных>.

Элемент данных отсутствует для команды с кодом 2 (просмотр).

Описание каждого элемента данных представляет заключенный в круглые скобки список значений отдельных полей. Разделителем значений полей является символ ; (точка с запятой).

Признаком конца данных является строка, содержащая в первой строке единственное целочисленное значение 0 (ноль).

Выходные данные

Информация, выводимая в выходной файл, зависит от кода команды.

При выполнении команды с кодом 1 (запись элемента) ничего не выводится в выходной файл.

При выполнении команды с кодом 2 (просмотр) выводятся значения, в порядке возрастания номера, только тех элементов массива, в которых хранятся данные. В строке содержатся значения одного элемента массива в следующем формате:

<номер элемента массива> <-> <данные> <-> <первичный ключ>.

При выполнении команды с кодом 3 (поиск) выводится строка следующего формата:

<признак успешности> <-> <данные> <-> <номер элемента массива>

Признак успешности: 0 – элемент не найден, 1 – поиск успешен.

Данные – последовательность полей данных, разделенных пробелами.

Номер элемента массива выводится в случае успешного поиска.

При выполнении команды с кодом 4 (удаление элемента) выводится строка следующего формата:

<признак успешности> <–> <данные> <-> <номер элемента массива>

Признак успешности: 0 – элемент не найден, 1 – поиск успешен.

Данные – последовательность полей данных, разделенных пробелами.

Номер элемента массива выводится в случае успешного удаления.

    1. Содержание отчета

  1. Задание на работу.

  2. Описание используемых функций хеширования.

  3. Обоснование выбора функций хеширования.

  4. Текст программы.

  5. Тестовые данные, иллюстрирующие работу программы

  6. Оценка эффективности алгоритма.

  1. Лабораторная работа № 7. ДЕРЕВЬЯ

Целью работы является изучение основных процедур работы с динамическими структурами, организованными в деревья.

    1. Задание на работу

Изучить способы применения и реализации АВЛ-деревьев.

Получить индивидуальное задание. Задание предусматривает реализацию структуры данных, соответствующей узлу АВЛ-дерева, а также функций для работы с ним (добавление вершины, удаление вершины, поиск, обход дерева).

Написать программу, реализующую индивидуальное задание.

    1. Пример индивидуального задания на работу

Разработать программу, обеспечивающую чтение из входного файла последовательности данных и построение двух бинарных деревьев. Первое дерево строится методом случайной вставки, второе дерево строится с использованием алгоритма построения подравненного АВЛ-дерева.

Должны быть реализованы процедуры обхода дерева в прямом, обратном и симметричном порядке.

Входные данные

Входной файл содержит последовательность элементов данных. Элементы данных разделяются символом : (двоеточие). Описание каждого элемента данных представляет заключенный в круглые скобки список значений отдельных полей. Разделителем значений полей является символ ; (точка с запятой).

Признаком конца данных является символ конец файла.

Выходные данные

Первая строка входного файла содержит текст:

«Дерево, построенное методом случайной вставки».

Затем следует строка:

«Обход в прямом порядке».

После этого выводятся элементы данных при их обходе в прямом порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.

Затем следует строка:

«Обход в обратном порядке».

После этого выводятся элементы данных при их обходе в обратном порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.

Затем следует строка:

«Обход в симметричном порядке».

После этого выводятся элементы данных при их обходе в симметричном порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.

Затем выводится пустая строка.

После этого выводится заголовок:

«АВЛ- дерево».

После этого выводятся элементы данных АВЛ-дерева при их обходе в прямом, обратном и симметричном порядке. Формат вывода должен соответствовать формату вывода для дерева, построенного методом случайной вставки.