Множественные ссылки на порожденные элементы

 

Для хранения подобных элементов в иерархических структурах используются линейные списки. Элементы списков могут иметь одно или несколько полей, среди которых можно выделять первичные и вторичные ключи. Для указания связей, которые образуют иерархические структуры, применяют систему ссылок. В случае, когда это ссылки на порожденные элементы, каждая из них ссылается на некоторый порожденный элемент. Количество таких ссылок соответствует числу порожденных элементов. Поскольку у элементов максимального уровня иерархии дерева нет порожденных элементов, у них отсутствуют какие-либо ссылки.

Рассмотрим данную организацию хранения элементов для дерева рисунка 7. Поскольку в этом дереве есть только два множества подобных элементов (учебные группы и фамилии с инициалами студентов), сформируем для них два линейных списка (таблицы 45, 46):

 

Таблица 45 Таблица 46

№ п/п Шифр учебной группы   № п/п ФИО студента
01-АС   Иванов И.И.
01-ИЭ   Сидоров С.С.
      Федоров Ф.Ф.
      Яковлев Я.Я.

 

Теперь надо показать связи между элементами, указанные в дереве. Для этого, в соответствии с рассматриваемым способом, сформируем у списка из таблицы 45 дополнительное поле Ссылки, в котором и зафиксируем требуемые связи. Получим таблицу 47:

 

Таблица 47

№ п/п Шифр учебной группы Ссылки
01-АС
01-ИЭ 1,2,4

 

Как видно из таблицы 47, ссылки для группы 01-АС относятся к элементу с номером 3 из таблицы 46, в котором хранится информация о студенте Федорове Ф.Ф., а ссылки для группы 01-ИЭ относятся к элементам с номерами 1, 2, 4 из той же таблицы, где хранится информация о студентах, учащихся в данной группе. Таким образом, совокупность таблиц 47 и 46 моделирует дерево рисунка 7.

 

Следует отметить, что подобные элементы могут иметь в свою очередь некоторую структуру. Например, такую, какая показана в таблицах 48 и 49:

 

Таблица 48 Таблица 49

№ п/п Шифр учебной группы ФИО старосты группы Ссылки   № п/п ФИО студента Домашний адрес
01-АС Федоров Ф.Ф.   Иванов И.И. ул. Кирова, 3 - 4
01-ИЭ Яковлев Я.Я. 1,2,4   Сидоров С.С. пр. Мира, 5 - 4
          Федоров Ф.Ф. ул. Репина, 1 - 2
          Яковлев Я.Я. ул. Маркса, 2 - 2

 

Тем не менее, в графическом изображении дерева (см. рисунок 7), как правило, элементы указываются своими ключевыми полями.

 

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

 

Пример 18. Пусть надо сформировать список студентов, учащихся в группе 01-ИЭ (эта задача подобна задаче поиска по вторичному ключу для линейных списков), т.е. qпросмотр = (Шифр учебной группы = 01-ИЭ, ФИО студента), где Кдоступ = 01-ИЭ. Элементы дерева имеют структуру, показанную в таблицах 48 и 49, а само дерево имеет вид рисунка 7.

Задача решается следующим образом:

1. по линейному списку с шифрами учебных групп (таблица 48) находят требуемую группу (для решения этой задачи применимы методы поиска, рассмотренные ранее для линейных списков) – это элемент с номером 2;

2. выбирают ссылки – это множество {1, 2, 4};

3. по линейному списку с фамилиями студентов (таблица 49) обращаются к элементам с номерами 1, 2 и 4. Получают список студентов: Иванов И.И., Федоров Ф.Ф., Яковлев Я.Я. Алгоритм заканчивает работу.

 

Пример 19. Пусть надо определить, в какой группе учится студент Иванов И.И. (эта задача подобна задаче поиска по первичному ключу в линейном списке), т.е. qпросмотр = (ФИО студента= Иванов И.И., Шифр учебной группы), где Кдоступ = Иванов И.И. Поскольку при рассматриваемой организации структур хранения отсутствует связь элементов второго уровня дерева с элементами первого уровня, поиск следует организовать, начиная с учебных групп. Задача решается следующим образом:

1. выбирается первый элемент в списке учебных групп (таблица 48). Это группа с шифром 01-АС;

2. по значению ссылки обращаются к соответствующему элементу (он имеет номер 3) списка студентов (таблица 49);

3. сравнивают фамилию и инициалы студента с искомой фамилией и инициалами. Поскольку Федоров Ф.Ф. ≠ Иванов И.И., управление возвращается к просмотру таблицы 48;

4. в списке учебных групп выбирают следующий (второй) элемент. Это группа с шифром 01-ИЭ;

5. в списке ссылок этой группы выбирают первую ссылку (это 1) и в списке студентов находят первый элемент;

6. фамилию и инициалы студента сравнивают с искомой фамилией и инициалами. Поскольку фамилии и инициалы совпадают, делается вывод, что студент учится в той группе, для которой был выбран последний указатель, т.е. в группе 01-ИЭ. Алгоритм заканчивает работу.

 

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

 

Пример 20. Пусть в дерево рисунка 7 (оно описано в таблицах 46, 47) надо включить элемент со структурой:

 

ФИО студента Шифр учебной группы
Комаров К.К. 01-АС

 

т.е. qдобавление = (ФИО студента= Комаров К.К., Шифр учебной группы = 01-АС), где Кдоступ = Комаров К.К. , 01-АС.

Очевидно, после включения этого элемента дерево рисунка 7 приобретет другой вид (новый элемент выделен полужирным шрифтом):

 

 

Рисунок 8

 

Соответствующие изменения выполнены в таблицах 46 и 47, которые приобретут вид таблиц 51 и 50, соответственно (новые и измененные данные выделены заливкой):

 

Таблица 50 Таблица 51

№ п/п Шифр учебной группы Ссылки   № п/п ФИО студента
01-АС 2,4   Иванов И.И.
01-ИЭ 1,3,5   Комаров К.К.
        Сидоров С.С.
        Федоров Ф.Ф.
        Яковлев Я.Я.







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


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

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

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

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