Структуры и алгоритмы обработки данных. Ключарев А.А - 31 стр.

UptoLike

31
ленном списке. Понятие «первого» элемента здесь достаточно условно
и не всегда требуется. Хотя иногда бывает полезно выделить некоторый
элемент как «первый» путем установки на него специального указате-
ля. Это требуется, например, для предотвращения «зацикливания» при
просмотре списка.
Указатель на "первый"
элемент списка
Рис. 4. Циклический однонаправленный список
Основные операции, осуществляемые с циклическим однонаправ-
ленным списком:
– вставка элемента;
– просмотр
– поиск;
– удаление элемента.
Для описания алгоритмов этих основных операций используем те же
объявления данных, что и для линейного однонаправленного списка.
Вставка элемента в список, как уже говорилось, проще, чем для линей-
ного однонаправленного списка и реализуется с помощью одной единствен-
ной процедуры: Ins_CicleSingleList. В качестве входных парамет-
ров передаются данные для заполнения создаваемого элемента, указатель
на начало списка и указатель на текущий элемент в списке, после которого
осуществляется вставка. Выходными параметрами процедур является ука-
затель на начало списка (который возможно изменится) и указатель теку-
щего элемента, который показывает на вновь созданный элемент:
procedure Ins_CicleSingleList(DataElem: TypeData;
var ptrHead, ptrCurrent: PElement);
{Вставка элемента в циклический однонаправленный список}
{справа от элемента, на который указывает ptrCurrent}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
New(ptrAddition);