Многосвязные списки.


СД типа дек.

 

Дек – линейная структура (последовательность) в которой операции включения и исключения элементов могут выполняться как с одного, так и с другого конца последовательности.

 
 

 

 


Допустимые операции:

1. инициализация;

2. проверка: дек пуст / дек не пуст;

3. включение элемента в начало / конец дека;

4. исключение элемента из начала / конца дека.

 

 

В общем случае число указателей может быть произвольным. В результате такого обобщения мы получаем многосвязный список. Рассмотрим несколько примеров таких списков.

Пример 1. Каждый элемент многосвязного списка может входить одновременно в несколько односвязных списков. Т.е. получается, что многосвязный список “прошит” в нескольких направлениях.

Например, необходимо организовать данные об абитуриентах, но кроме организации всех сведений, необходимо из общего списка выбрать абитуриентов, характеризующихся некоторыми общими данными (абитуриенты-медалисты, абитуриенты, проживающие в одном городе, абитуриенты, сдавшие экзамен на “отлично”).

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

       
   
 
 

 


Пример 2. Рассмотрим нелинейный связный список, который удобен для представления диаграмм состояния дискретных систем.

 
 

 

 


Имеем диаграмму из трех состояний. Дуги показывают изменение текущего состояния. Изменение состояния осуществляется под действием входного сигнала X, при этом система переходит в новое состояние и выдает выходной сигнал Y. Подобная диаграмма может быть использована в диалоговой вычислительной системе, где входные сигналы представляют собой команды, вводимые в систему с терминала пользователя, а выходные представляют собой имена подпрограмм. Таким образом, получив команду X и отыскав в списке по текущему состоянию соответствующий этой команде элемент описания исходящей дуги системы, выполняется подпрограмма, указанная в найденном элементе. Тем самым реализуется требуемая реакция Y. После этого система переходит в другое состояние, и с этого момента это состояние становится текущим.