Организация и функционирование компьютеров



Использование указателей для обработки списков - часть 4


                                  break

                     end

            else  begin  prev := @(next.p);                 {Сcылка на указатель в предыдущем элементе}

                                  next := next.p                          {Переход к следующему элементу}

                     end

end;

 Кольцевой список отличается от линейного тем, что в нем указатель в последнем элементе не равен Nil, а указывает на первый элемент, то есть ссылки замыкают список в кольцо. Кольцевой список позволяет производить поиск не только с первого, но и с любого элемента. Процедуры поиска, добавления и уничтожения в кольцевом списке несколько отличаются за счет проверки условия окончания поиска (next <> p0  вместо  next <> Nil).

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




Содержание  Назад  Вперед