Алгоритм - циклические и двусвязные списки

Что такое круговой список?

В последнем узле списка поле link содержит null — значение, указывающее на конец. Циклический список состоит из указания на первый узел в списке. Говорят, что это открытый или линейный сукк (хвост) = голова.


Определение кругового списка по указателю


<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"> круговой список, управляемый указателем управляемый указателем круговой список

1) Просмотрите список

<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"> круговой путь к списку

Путь процедуры(L: ptr , p : ptr)
var pp:ptr
start
    pp := p
    repeat
         process (*pp.val)
         pp := *pp.link
    to (pp=p)
end

2) Вставка

Вставка в головку

<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"> круговой связанный список Вставить в лид 

Интеграция за пределами лида

<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"> цепочечный круговой список Вставить в другом месте, а не в начале Вставить не сверху


См.:
Вставка элемента в связанный список.

3) Удаление

<таблица align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"> Удаление из связанного кругового списка


См.: удаление элемента из связанного списка.



Плюсы и минусы

  • Курс не имеет особого случая.
  • Три случая для вставки:
    • Вверху (пустой список).
    • Вверху  (непустой список).
    • Где-то еще, а не в лидерах.
  • Три случая для удаления;
    • Вверху (список из одного пункта).
    • Вверху (список с более чем одним элементом).
    • Где-то еще, а не в лидерах

Определение циркулярного списка по ссылке




  • Маршрут прокладывается от текущей ссылки, которая его отправляет.
  • Интеграция не имеет особого случая.
  • Мы должны быть уверены, что звено, которое нужно устранить, не является часовым.