🤝24. Динамические структуры данных. Двусвязные списки. Алгоритмы их обработки.

Динамические структуры данных - составные структуры данных, динамически меняющие свой размер во время выполнения программы.

Двусвязный список

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

type – тип информационного поля элемента списка;

*next, *prev – указатели на следующий и предыдущий элементы этой структуры соответственно.

Основные операции

  • создание списка;

  • печать (просмотр) списка;

  • вставка элемента в список;

  • удаление элемента из списка;

  • поиск элемента в списке;

  • проверка пустоты списка;

  • удаление списка.

⚠️Многие коды представлены на С++. Меняйте вывод и выделение памяти.

Создание двунаправленного списка

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

Добавление элемента в начало списка ( listPush ):

Добавление элемента в конец списка ( listPushBack ):

Удаление элемента из начала списка c получением его значения(listPop):

Удаление элемента из конца списка с получением его значения (listPopBack ):

Печать (просмотр) двунаправленного списка

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

Вставка элемента в двунаправленный список

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

Добавление элемента в двунаправленный список

Last updated