Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Struktury_dannykh3.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
45.9 Кб
Скачать

Меню для лабораторной работы 3 будет следующим:

  1. Добавить информацию в исходную таблицу.

  2. Найти информацию по значению.

  3. Удалить информацию по ее значению.

  4. Вывести исходную таблицу на экран.

  5. Вывести инвертированный список на экран.

  6. Сохранить в файле.

  7. Загрузить из файла.

Поясним эти пункты меню.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]