Программирование двусвязных списков — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

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

Программирование двусвязных списков

2017-06-05 255
Программирование двусвязных списков 0.00 из 5.00 0 оценок
Заказать работу

Очень часто для хранения и обработки различных наборов данных удобно использовать 2-связные (двунаправленные) линейные списки, записи которых связаны посредством пары указателей, хранимых в адресных полях записей списка [5-6]. Логическую структуру 2-связного списка иллюстрирует диаграмма, представленная на рисунке 4.

 

 

Рисунок 4 – Диаграмма 2-связного списка

 

В каждой записи поле prev содержит адрес предыдущей записи, поле next – адрес последующей записи, а data обозначает информационные поля. Для доступа к списку могут быть использованы адреса начальной (start), конечной (end) и текущей (this) записей списка. Индикатором начальной и конечной записей являются нулевые (NULL) значения адресных полей Start и end, соответственно. Любая функциональная обработка списка строится на основе процедур модификации и просмотра. Процедуры модификации должны обеспечивать вставки и исключение записей списка. Частным случаем процедур вставки и исключения являются процедуры добавить и удалить начальную или конечную запись списка. На рисунке 5 представлена диаграмма, иллюстрирующая процедуру вставки новой записи Z после записи Y (или перед записью X).

 

Рисунок 5 – Процедура вставки в 2-связном списке

 

Следующая диаграмма иллюстрирует процедуру исключения текущей записи this (рисунок 6).

 

 

Рисунок 6 – Процедура исключения в 2-связном списке

 

Процедуры просмотра списка должны обеспечивать смещение указателя текущей записи (this) на требуемое число позиций в направлении начала или конца списка, как показано на следующей диаграмме (рисунок 7).

 

 

Рисунок 7 – Процедура просмотра списка

 

Частным случаем смещения указателя текущей записи является переход к соседней предыдущей или последующей записи (смещение на 1 позицию), а также нефиксированный переход к начальной или конечной записям списка, который позволяет принудительно инициализировать указатели start и end после модификаций в начале и конце списка.

Для организации объектно-ориентированной обработки данных, реализованных на основе списковых структур, целесообразно построить базовый класс записей 2-связного списка (class Dlink).

Базовый класс Dlink должен включать универсальные компоненты. Компоненты-данные класса Dlink должны обеспечивать двунаправленную защищенную (protected) связь записей списка посредством 2-х адресных полей, которые содержат адреса предыдущей и последующей записей списка, соответственно. Универсальную обработку записей списка должны обеспечивать общедоступные (public) компонентные методы. Компоненты базового класса Dlink могут наследоваться в различных производных классах с информационными полями данных и методами их обработки с обращением к базовым методам обработки списка.


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

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.