- •13. Наследование, вид доступа в производных классах
- •14. Наследование. Конструкторы и деструкторы.(вариант 1)
- •14. Наследование. Конструкторы и деструкторы.(вариант 2)
- •Конструктор.
- •15. Виртуальные методы, механизм позднего связывания.
- •16. Абстрактные классы.
- •17. Множественное наследование.
- •18. Полиморфизм. Перегрузка функций.
- •19. Шаблоны функций.
- •20. Шаблоны классов.
- •21. Динамические структуры данных. Стек. Очередь. Двусторонняя очередь.
- •Очередь
- •21. Динамические структуры данных. Список. Двунаправленный список. Кольцевой список. Кольцевой двунаправленный список.
- •Кольцевой связный список
Кольцевой связный список
Разновидностью связных списков является кольцевой (циклический, замкнутый) список. Он тоже может быть односвязным или двусвязным. Последний элемент кольцевого списка содержит указатель на первый, а первый (в случае двусвязного списка) — на последний.
Реализация такой структуры происходит на базе линейного списка. С каждым кольцевым списком есть указатель на первый элемент. В этом списке константы NULL не существует.
Так же существуют циклические списки с выделенным головным элементом, облегчающие полный проход через список.
В программировании двунаправленные списки часто преобразовывают следующим образом: "обычный" линейный двунаправленный список замыкают в своеобразное "кольцо": при движении по списку в прямом направлении можно от последнего звена переходить к звену, следующему прямо за заглавным звеном, а при движении в обратную сторону - от заглавного звена переходить сразу к последнему звену. В связи с этим мы будем называть двунаправленные списки подобного типа кольцевыми двунаправленными списками (двунаправленными кольцами или просто кольцами).
Подобная организация списка упрощает процедуру поиска или перебора звеньев с любого места списка с автоматическим переходом от конца к началу или наоборот.