Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебник Информатика.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
17.26 Mб
Скачать

Кольцевые структуры

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

Представим данным методом дерево рисунка 7. Его описание сведем в таблицы 56, 57:

Таблица 56                                                           Таблица 57

№ п/п

Шифр учебной группы

Ссылка на порожденный элемент

№ п/п

ФИО студента

Ссылка на подобный элемент

Ссылка на родительский элемент

1

01-АС

3

1

Иванов И.И.

2

2

2

01-ИЭ

1

2

Сидоров С.С.

4

2

3

Федоров Ф.Ф.

3

1

4

Яковлев Я.Я.

1

2

Как видно, в таблицах 56 и 57 отсутствуют пустые ссылки. Это означает, что конечные элементы в цепочках подобных элементов ссылаются на первые элементы в этих цепочках. Так получаются «горизонтальные» кольца. Наличие таких колец позволяет решать задачи, требующие многократного просмотра списка от начала к концу. Подобная задача, например, имеет место при сортировке линейного списка некоторыми методами. Например, когда требуется отсортировать список студентов группы 01-ИЭ по возрастанию значений ключа, а группы 01-АС – по убыванию.

В то же время совокупность ссылок на порожденные и родительские элементы формирует «вертикальные» кольца. Они позволяют переходить от порожденных элементов к родительским, чего не было в предыдущих методах.

Рассмотрим решение задач просмотра элементов в такой структуре.

Пример 23. Пусть надо определить, в какой группе учится студент Иванов И.И., т.е. т.е. qпросмотр = (ФИО студента = Иванов И.И., Шифр учебной группы), где Кдоступ = Иванов И.И.

Решение задачи:

  1. по списку студентов (таблица 57) определяется элемент, соответствующий искомой фамилии и инициалам – это элемент с номером 1;

  1. в поле Ссылка на родительский элемент таблицы 57 определяется номер его родительского элемента в списке учебных групп – это номер 2;

  1. в списке учебных групп (таблица 56) ищется элемент с номером 2 и выводится шифр группы – 01-ИЭ.

Поисковые задачи, аналогичные формированию списка студентов заданной группы,  решаются подобно предыдущим примерам.

Добавление нового элемента выполняется аналогично предыдущим методам (рассмотреть самостоятельно).

Справочники

Связи между элементами дерева формируют отдельное описание в виде линейного списка - справочник.

Например, пусть исходное дерево имеет вид рисунка 7. Сформируем для него справочник (таблица 58):

Таблица 58

№ п/п

Обозначение поля

Элемент дерева

Родительский элемент

Порожденные элементы

1

Шифр учебной группы

01-АС

-

3

2

Шифр учебной группы

01-ИЭ

-

4,5,6

3

ФИО студента

Федоров Ф.Ф.

1

-

4

ФИО студента

Иванов И.И.

2

-

5

ФИО студента

Сидоров С.С.

2

-

6

ФИО студента

Яковлев Я.Я.

2

-

Если элементы дерева не содержат дополнительных данных, то такого описания дерева в целом достаточно. Если же элементы дерева имеют структуру, то их описание хранится отдельно в списке элементов. Например, если для элементов дерева рисунка 7 надо также хранить информацию таблиц 48 и 49, то эти данные помещаются в таблицы, подобные таблицам 59 и 60:

Таблица 59                         Таблица 60

№ п/п

ФИО старосты группы

№ п/п

Домашний адрес

1

Федоров Ф.Ф.

1

ул. Кирова, 3 - 4

2

Яковлев Я.Я.

2

пр. Мира, 5 - 4

3

ул. Репина, 1 - 2

4

ул. Маркса, 2 - 2

       

Справочник в таком случае модифицируется (таблица 61): в него добавляется графа Ссылка на элемент, в которой указывается таблица с информацией (например, Т59 для обозначения таблицы 59), и номер элемента с описанием в этой таблице:

                                                                        Таблица 61

№ п/п

Обозначение поля

Элемент дерева

Родительский элемент

Порожденные элементы

Ссылка на элемент

1

Шифр учебной группы

01-АС

-

3

Т59,1

2

Шифр учебной группы

01-ИЭ

-

4,5,6

Т59,2

3

ФИО студента

Федоров Ф.Ф.

1

-

Т60,3

4

ФИО студента

Иванов И.И.

2

-

Т60,1

5

ФИО студента

Сидоров С.С.

2

-

Т60,2

6

ФИО студента

Яковлев Я.Я.

2

-

Т60,4

В случае хранения описываемых структур во внешней памяти в роли таблиц могут выступать файлы, а ссылки на таблицы заменяются именами файлов (или полными именами).

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

Пример 24. Пусть требуется сформировать список студентов, учащихся в группе 01-АС, т.е. qпросмотр = (Шифр учебной группы = 01-АС, ФИО студента), где Кдоступ = 01-АС. Элементы дерева имеют структуру, показанную в таблицах 59, 60, дерево описано в таблице 61.

Решение задачи:

  1. по справочнику (таблица 61) определяем элемент дерева 01-АС – это элемент с номером 1;

  1. определяем порожденные элементы для него (графа Порожденные элементы) – это элемент той же таблицы с номером 3;

  1. обращаемся к элементу с номером 3 и выводим фамилию и инициалы – Федоров Ф.Ф. Алгоритм заканчивает работу.

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

Решение задачи:

  1. по справочнику (таблица 61) находим нужного студента – это элемент с номером 5;

  1. по полю Родительский элемент определяем соответствующую ссылку – это элемент с номером 2;

  1. обращаемся к элементу с номером 2 и выводим шифр группы – 01-ИЭ. Алгоритм заканчивает работу.

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

Пример 26. Пусть в дереве рисунка 7 (описание дерева соответствует таблице 58) надо разместить элемент со структурой:

ФИО студента

Шифр учебной группы

Комаров К.К.

01-АС

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

После включения элемента дерево приобретет вид рисунка 8, а его описание будет соответствовать таблице 62 (измененные и новые данные выделены заливкой):

  Таблица 62

№ п/п

Обозначение поля

Элемент дерева

Родительский элемент

Порожденные элементы

1

Шифр учебной группы

01-АС

-

3,7

2

Шифр учебной группы

01-ИЭ

-

4,5,6

3

ФИО студента

Федоров Ф.Ф.

1

-

4

ФИО студента

Иванов И.И.

2

-

5

ФИО студента

Сидоров С.С.

2

-

6

ФИО студента

Яковлев Я.Я.

2

-

7

ФИО студента

Комаров К.К.

1

-