Одним из недостатков линейных списков является то, что имея указатель р на элемент, мы не можем получить доступа к предшествующим элементам.
Циклический связанный список— это список, в котором последний узел связан с первым узлом [11]. Чтобы превратить линейный список в циклический необходимо в поле адреса последнего элемента записать не NULL, а адрес первого элемента списка 1st (рис. 2.2).
1st ----------------------------------- »■ | jiiutiT | 1st | |||||||
info | pirn | —*■ | info | ptrn | ----- и- ... —и- | mfo | ptrn | ||
. | |||||||||
Рис. 2.2. Графическое представление циклического списка
В циклическом списке всегда существует возможность доступа к любому элементу, начиная с произвольно выбранного узла.
Простейшие операции над циклическим списком [11]:
1) размещение нового узла после элемента с известным адресом/?;
2) удаление узла после элемента с известным адресом/?.
В виде циклического стека организуются стеки и очереди. Недостатки циклического списка:
1) список нельзя просматривать в обратном направлении;
2) располагая только значением указателя на элемент, его невозможно удалить.
Для преодоления этих недостатков используются двунаправленные связанные списки.