Инвертированные списки

 

Основной список не изменяется. Строятся индексы в нужном количестве. В индекс включаются все значения соответствующего вторичного ключа, а также все ссылки на элементы основного списка с данным значением вторичного ключа.

Например, пусть основной список показан в таблице 23. Соответствующие индексы показаны в таблицах 38 – 40:

 

Таблица 38 Таблица 39 Таблица 40

№ п/п Шифр учебной группы Ссылки   № п/п Дисциплина Ссылки   № п/п Оценка Ссылки
01-АС   Информатика 1,3  
01-ИЭ 1,3,5   Программирование 2,4   2,5
02-ВТ   Физика   1,4

 

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

 

Рассмотрим, как выполняется задача просмотра.

 

Пример 16. Пусть надо просмотреть список всех студентов, сдававших информатику, т.е. qпросмотр = (Дисциплина = Информатика, ФИО студента), где Кдоступ = Информатика. Поиск осуществляется последовательным выполнением шагов:

1. по индексу для ключа Дисциплина(таблица 39) находится соответствующий элемент: это первый элемент в списке;

2. выбираются ссылки для этого элемента: это множество {1, 3};

3. по основному списку(таблица 23)выбираются последовательно элементы с номерами 1 и 3 и выводится содержимое поля ФИО студента для этих элементов; получаем список - Иванов И.И. и Сидоров С.С. Работа алгоритма закончена.

 

Рассмотрим, как решается задача добавления.

 

Пример 17. Пусть к основному списку надо добавить элемент со структурой:

 

ФИО студента Шифр учебной группы Дисциплина Оценка
Ковалев К.К. 02-ВТ Программирование

 

т.е. qдобавление = (ФИО студента= Ковалев К.К., Шифр учебной группы = 02-ВТ, Дисциплина = Программирование, Оценка = 2), где Кдоступ = Ковалев К.К.

Модифицированный основной список показан в таблице 41, а три индекса - в таблицах 42 – 44. Измененные значения ссылок, а также новый элемент в одном из индексов выделены заливкой; новый элемент в основном списке выделен полужирным шрифтом:

 

Таблица 41

№ п/п ФИО студента Шифр учебной группы Дисциплина Оценка
Иванов И.И. 01-ИЭ Информатика
Ковалев К.К. 02-ВТ Программирование
Петров П.П. 02-ВТ Программирование
Сидоров С.С. 01-ИЭ Информатика
Федоров Ф.Ф. 01-АС Программирование
Яковлев Я.Я. 01-ИЭ Физика

 

Таблица 42 Таблица 43 Таблица 44

№ п/п Шифр учебной группы Ссылки   № п/п Дисциплина Ссылки   № п/п Оценка Ссылки
01-АС   Информатика 1,4  
01-ИЭ 1,4,5   Программирование 2,3,5  
02-ВТ 2,3   Физика   3,6
                1,5







Дата добавления: 2015-03-03; просмотров: 677;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.