Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Добавление элементов в двусвязный списокСтр 1 из 3Следующая ⇒
Двусвязный список Двусвязный список позволяет двигаться по цепочке элементов в обоих направлениях, имея доступными следующий и предыдущий элементы. Формирование двусвязного списка: struct List { int info; struct List *next; struct List *prev; }; Циклический список позволяет моделировать линейные цепочки элементов, исключив постоянные проверки на «первый» и «последний». В таком списке поле next последнего элемента ссылается на первый элемент, а поле pred первого - на последний элемент списка. Единственный элемент списка ссылается сам на себя (l-> next = l; l-> pred = l). Операции включения элемента в начало и конец списка идентичны за исключением того, что в первом случае меняется указатель на первый элемент списка. На рис. 1, 2 приведены примеры двусвязного и циклического списков. Рис. 1 – Двусвязный список Рис. 2 – Циклический двусвязный список Добавление элементов в двусвязный список Определена структура, которая будет использоваться в последующих примерах: #define LIST struct List
LIST { char info; LIST *next; LIST *prev; };
Функция добавления элементов в двусвязный список:
Пример. Пусть необходимо сформировать двусвязный список, представленный в программе переменной l, состоящий из трех элементов (‘a’, ’c’, ’b’) (элементы указаны в порядке их добавления в список), упорядоченный по алфавиту. Для этого необходимо использовать функцию add:
LIST *l = 0; add(& l, ’a’); add(& l, ’c’); l = l-> prev; add(& l, ’b’);
На рис. 3, 4, 5 показаны примеры добавления элементов в начало, середину и конец двусвязного списка соответственно. Рис.3 – Добавление первого элемента двусвязного списка Рис. 4 – Добавление элемента в конец двусвязного списка Рис. 5 – Добавление элемента в середину двусвязного списка
|