Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

сиаод / 1-34 / 13. Кольцевой двусвязный список

..pdf
Скачиваний:
76
Добавлен:
11.05.2015
Размер:
254.97 Кб
Скачать

13. Кольцевой двусвязный список.

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

Реализация такой структуры происходит на базе линейного списка. В каждом кольцевом списке есть указатель на первый элемент. В этом списке константы NULL не существует.

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

2 метода работы:

1 – Использование фиктивного элемента.

Endl^.right=Beginl

Beginl^.left= Endl

Алгоритм добавления первого элемента:

1.New (P)

2.P ^.right <- nil.

3.P ^.left <- nil

4.Begin L <- P

5.End L <- P

Алгоритм добавления в конец списка:

1.New (P)

2.P^.info <- C

3.P ^.right <- nil.

4.P ^.left < End l

5.End L ^. Right <- P

6.End L <- P

Алгоритм удаления элемента:

1.P <- Begin L

2.Begin L <- Begin L ^. Right.

3.Begin L ^. Left <- nil.

4.Dispose (P)

5.End L ^. Right <- Begin L

6.Begin L ^. Left

2 – без использования фиктивного элемента.

Алгоритм добавления первого элемента:

1.New (P)

2.P ^.right <- P

3.P ^.left <- P

4.Begin L <- P

5.End L <- P

Алгоритм добавления в конец списка:

1.New (P).

2.P ^.info <- C

3.P ^.right <- P2

4.P ^.right <- Begin L

5.Begin L ^.left <- P2

6.P ^.left <- End L

7.End L <- P.