
- •Результаты выполнения лабораторной работы по второму варианту.
- •Результаты выполнения работы по третьему варианту.
- •Результаты выполнения работы по четвертому варианту.
- •Результаты выполнения работы по пятому варианту:
- •Результаты выполнения работы по седьмому варианту.
- •III. Лабораторная работа 3. Инвертированные списки.
- •Меню для лабораторной работы 3 будет следующим:
Меню для лабораторной работы 3 будет следующим:
Добавить информацию в исходную таблицу.
Найти информацию по значению.
Удалить информацию по ее значению.
Вывести исходную таблицу на экран.
Вывести инвертированный список на экран.
Сохранить в файле.
Загрузить из файла.
Поясним эти пункты меню.
1 пункт – заполнение исходной таблицы. Строки таблицы первоначально заполняется подряд, в порядке прихода записей, при этом параллельно заполняются все необходимые инвертированные списки. Не забывать, что значения в столбцах инвертированных списков должны быть отсортированы. Когда с таблицей уже была проведена работа, то некоторые строки в ней окажутся свободными. Новые записи целесообразно помещать в эти свободные строки.
2 пункт. Информация ищется по соответствующему инвертированному списку. Для ускорения поиска используется алгоритм ”метод деления отрезка пополам”. После того, как в инвертированном списке найдена строка с заданным значением, на экран выводятся найденные строки из исходной таблицы.
3 пункт. Поиск информации осуществляется по соответствующему инвертированному списку, после чего из исходной таблицы удаляются найденные строки. Корректируются все построенные инвертированные списки. Чтобы не менять нумерацию строк в исходной таблице, удаленные строки в исходной таблице просто помечаются.
6 пункт. В файле необходимо сохранить исходную таблицу и все построенные инвертированные списки.
Поясним результат выполнения третьего пункта меню. Пусть необходимо удалить все книги 1990 года выпуска. По инвертированному списку по столбцу год_выпуска находим номера строк 1 и 4.
В исходной таблице помечаем эти строки, как удаленные. Это означает, что при выводе на экран они будет пропускаться. При записи новой информации эти строки считаются свободными и могут быть заполнены вновь. Для того, чтобы не искать свободные строки методом перебора, можно создать в исходной таблице еще один столбец “цепочка свободных ячеек”, аналогично тому, как это было сделано в некоторых вариантах лабораторной работы 2.
В инвертированных списках находим номера удаленных строк и удаляем их из списка номеров строк. Если в строке инвертированного списка не осталось ни одного номера строки, то эту строку нужно удалить, сдвинув на ее место остальные строки.
Исходная таблица будет иметь вид:
-
Шифр
Автор
Название книги
Год_выпуска
0
900
Иванов А.
Дома и люди
2005
1
*
Эйдельман Н.
Первый декабрист
1990
2
300
Дёмин В.
Гиперборейские тайны.Т.1
2007
3
400
Кузьминская Т.
Моя жизнь дома и в ясной поляне
1987
4
*
Пыляев М.
Старая Москва
1990
5
200
Низовский А.
Зачарованные клады России
2007
6
700
Широкова Н.
Мифы кельтских народов
2004
7
800
Акунин Б.
Коронация
2005
8
100
Дёмин В.
Гиперборейские тайны. Т.2
2007
9
1000
Акунин Б.
Алмазная колесница
2003
В поле “шифр” строки помечены *.
Инвертированные списки будут иметь вид:
По столбцу шифр книги:
-
Значение
Номера строк
100
8
200
5
300
2
400
3
700
6
800
7
900
0
1000
9
По автору:
-
Значение
Номера строк
Акунин Б
7,9
Дёмин В.
2, 8
Иванов А.
0
Кузьминская Т.
3
Низовский А.
5
Широкова Н.
6
По столбцу год_выпуска:
-
Значение
Номера строк
1987
3
2003
9
2004
6
2005
0,7
2007
2,5,8
Пусть необходимо записать новую запись. Ее целесообразно поместить в строку 1. Исходная таблица будет иметь вид:
-
Номер строки
Шифр
Автор
Название книги
Год_выпуска
0
900
Иванов А.
Дома и люди
2005
1
750
Глушкова В.
Усадьбы Подмосковья
2006
2
300
Дёмин В.
Гиперборейские тайны.Т.1
2007
3
400
Кузьминская Т.
Моя жизнь дома и в ясной поляне
1987
4
*
Пыляев М.
Старая Москва
1990
5
200
Низовский А.
Зачарованные клады России
2007
6
700
Широкова Н.
Мифы кельтских народов
2004
7
800
Акунин Б.
Коронация
2005
8
100
Дёмин В.
Гиперборейские тайны. Т.2
2007
9
1000
Акунин Б.
Алмазная колесница
2003
Инвертированный список по шифру:
-
Значение
Номера строк
100
8
200
5
300
2
400
3
700
6
750
1
800
7
900
0
1000
9
Инвертированный список по автору:
-
Значение
Номера строк
Акунин Б
7,9
Глушкова В.
1
Дёмин В.
2, 8
Иванов А.
0
Кузьминская Т.
3
Низовский А.
5
Широкова Н.
6
Инвертированный список по Год_выпуска:
-
Значение
Номера строк
1987
3
2003
9
2004
6
2005
0,7
2006
1
2007
2,5,8
Покажем на примере, какие изменения должны быть внесены в таблицы, если в инвертированных списках записаны только номера первых строк из исходной таблицы, а остальные номера соединены в цепочку в соответствующем столбце исходной таблицы. Новый столбец соответствует цепочке номеров строк, имеющих одинаковое значение по столбцу “автор”.
Имеем исходную таблицу:
-
Шифр
Автор
Название книги
Год_выпуска
0
900
Иванов А.
Дома и люди
2005
-1
1
750
Глушкова В.
Усадьбы Подмосковья
2006
-1
2
300
Дёмин В.
Гиперборейские тайны.Т.1
2007
8
3
400
Кузьминская Т.
Моя жизнь дома и в ясной поляне
1987
-1
4
*
Пыляев М.
Старая Москва
1990
5
200
Низовский А.
Зачарованные клады России
2007
-1
6
700
Широкова Н.
Мифы кельтских народов
2004
-1
7
800
Акунин Б.
Коронация
2005
9
8
100
Дёмин В.
Гиперборейские тайны. Т.2
2007
-1
9
1000
Акунин Б.
Алмазная колесница
2003
-1
Инвертированный список по столбцу “Автор” будет таким:
-
Значение
Номера строк
Акунин Б
7
Глушкова В.
1
Дёмин В.
2
Иванов А.
0
Кузьминская Т.
3
Низовский А.
5
Широкова Н.
6
После удаления из исходной таблицы автора Акунин Б. получим следующую исходную таблицу:
-
Номер строки
Шифр
Автор
Название книги
Год_выпуска
0
900
Иванов А.
Дома и люди
2005
-1
1
750
Глушкова В.
Усадьбы Подмосковья
2006
-1
2
300
Дёмин В.
Гиперборейские тайны.Т.1
2007
8
3
400
Кузьминская Т.
Моя жизнь дома и в ясной поляне
1987
-1
4
*
Пыляев М.
Старая Москва
1990
5
200
Низовский А.
Зачарованные клады России
2007
-1
6
700
Широкова Н.
Мифы кельтских народов
2004
-1
7
*
Акунин Б.
Коронация
2005
8
100
Дёмин В.
Гиперборейские тайны. Т.2
2007
-1
9
*
Акунин Б.
Алмазная колесница
2003
Инвертированный список по столбцу “Автор” будет таким:
-
Значение
Номера строк
Глушкова В.
1
Дёмин В.
2
Иванов А.
0
Кузьминская Т.
3
Низовский А.
5
Широкова Н.
6
В цепочке номеров свободных строк должны находиться номера 4, 7, 9.
Отметим, что помеченные строки из исходной таблицы не должны выводиться на экран.
Покажем, как при удалении 4,7,9, строки должны измениться инвертированный список по столбцу Год_выпуска и соответствующий ему столбец в исходной таблице.
Инвертированный список по Год_выпуска:
-
Значение
Номера строк
1987
3
2003
9
2004
6
2005
0
2006
1
2007
2
Исходная таблица:
-
Шифр
Автор
Название книги
Год_выпуска
0
900
Иванов А.
Дома и люди
2005
-1
1
750
Глушкова В.
Усадьбы Подмосковья
2006
-1
2
300
Дёмин В.
Гиперборейские тайны.Т.1
2007
5
3
400
Кузьминская Т.
Моя жизнь дома и в ясной поляне
1987
-1
4
*
Пыляев М.
Старая Москва
1990
-1
5
200
Низовский А.
Зачарованные клады России
2007
8
6
700
Широкова Н.
Мифы кельтских народов
2004
-1
7
*
Акунин Б.
Коронация
2005
-1
8
100
Дёмин В.
Гиперборейские тайны. Т.2
2007
-1
9
*
Акунин Б.
Алмазная колесница
2003
-1
Л И Т Е Р А Т У Р А
Г.А.Шейкина. Методические указания к курсовой работе по дисциплине “Структуры и алгоритмы обработки данных”. Москва, 2000.
С О Д Е Р Ж А Н И Е
Введение
Лабораторная работа 1
Лабораторная работа 2
Лабораторная работа 3