Cтраница 1
![]() |
Циклический связанный список. [1] |
Циклические списки используются, когда нужно обходить набор элементов в бесконечном цикле. На каждом шаге цикла программа просто перемещает указательна следующую ячейку списка. Допустим, имеется циклический список элементов, содержащих названия дней недели. [2]
![]() |
Двусвязный список. [3] |
Циклические списки также позволяют получить до ступ ко всему списку, начиная с любой позиции. Это придает списку некоторую симметрию. Программа может работать со всеми элементами списка одинаково. [4]
Циклические списки можно использовать не только для представления структур, которым свойственна цикличность, но и для представления линейных структур. [5]
Встроенные циклические списки удобно использовать при повторении части списка ввода-вывода, при передаче части массива или его элементов в последовательности, отличной от порядка возрастания индекса. [6]
![]() |
Пример использования указателей на порожденные и подобные узлы.| Пример использования указателей на порожденные, подобные и исходные записи. [7] |
Следует отметить, что чаще используются двунаправленные циклические списки. [8]
Таким образом, мы видим, что циклические списки можно использовать не только для представления структур, которым свойственна цикличность, но также для представления линейных структур; циклический список с одним указателем на последний узел, по существу, эквивалентен простому линейному списку с двумя указателями на начало и конец. В связи с этим наблюдением возникает естественный вопрос: Как найти конец списка, имея в виду круговую симметрию. Пустой связи Л, которая отмечает конец, не существует. [9]
В описанном выше представлении памяти неявно предполагается, что атомарные узлы можно отличить от неатомарных узлов; более того, когда используются циклические списки или списки с двумя связями, желательно отличать головные узлы от узлов других типов, чтобы облегчить прохождение Списков. Поэтому каждый узел обычно содержит поле TYPE, которое говорит о типе информации, представленной в узле. [10]
Существует еще много способов представления деревьев в памяти компьютера. Вспомним рассмотренные нами в § 2.2 три основных способа представления линейных списков: обычные однонаправленные списки с конечной связью Л, циклические списки и списки с двумя связями. [11]
![]() |
Примеры реализации способов уско - [ IMAGE ] Пример однонаправ-рения доступа к узлам линейного связанно - ленного циклического списка го списка. [12] |
Важной разновидностью представления в памяти линейного списка является циклический список. Циклический список позволяет получить доступ к любому узлу списка, отправляясь от любого заданного узла. Циклические списки называются также кольцевыми структурами или кольцами. [13]
Передавать массивы или строки следует целиком, а не поэлементно. Это связано с тем, что каждый элемент списка ввода-вывода порождает свою собственную вызывающую последовательность машинных команд. Неэффективными конструкциями являются и циклические списки. [14]
![]() |
Список с подсписками. [15] |