🤝24. Динамические структуры данных. Двусвязные списки. Алгоритмы их обработки.
Динамические структуры данных - составные структуры данных, динамически меняющие свой размер во время выполнения программы.
Двусвязный список
Двунаправленный (двусвязный) список – это структура данных, состоящая из последовательности элементов, каждый из которых содержит информационную часть и два указателя на соседние элементы. При этом два соседних элемента должны содержать взаимные ссылки друг на друга.
type
– тип информационного поля элемента списка;
*next, *prev
– указатели на следующий и предыдущий элементы этой структуры соответственно.
Основные операции
создание списка;
печать (просмотр) списка;
вставка элемента в список;
удаление элемента из списка;
поиск элемента в списке;
проверка пустоты списка;
удаление списка.
⚠️Многие коды представлены на С++. Меняйте вывод и выделение памяти.
Создание двунаправленного списка
Для того, чтобы создать список, нужно создать сначала первый элемент списка, а затем при помощи функции добавить к нему остальные элементы. Добавление может выполняться как в начало, так и в конец списка. Реализуем рекурсивную функцию.
Добавление элемента в начало списка ( listPush ):
Добавление элемента в конец списка ( listPushBack ):
Удаление элемента из начала списка c получением его значения(listPop):
Удаление элемента из конца списка с получением его значения (listPopBack ):
Печать (просмотр) двунаправленного списка
Операция печати списка для двунаправленного списка реализуется абсолютно аналогично соответствующей функции для однонаправленного списка. Просматривать двунаправленный список можно в обоих направлениях.
Вставка элемента в двунаправленный список
В динамические структуры легко добавлять элементы, так как для этого достаточно изменить значения адресных полей. Операция вставки реализовывается аналогично функции вставки для однонаправленного списка, только с учетом особенностей двунаправленного списка
Last updated