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

UptoLike

35
Указатель
на "первый" элемент
Рис. 5. Циклический двунаправленный список
Основные операции, осуществляемые с циклическим двунаправлен-
ным списком:
– вставка элемента;
– просмотр;
– поиск;
– удаление элемента.
Для описания алгоритмов этих основных операций используем те же
объявления данных, что и для линейного двунаправленного списка.
Вставка элемента в список, как уже говорилось, проще, чем для ли-
нейного двунаправленного списка и реализуется с помощью одной един-
ственной процедуры: Ins_CicleDubleList. В качестве входных па-
раметров передаются: данные для заполнения создаваемого элемента,
указатель на начало списка и указатель на текущий элемент в списке,
после которого осуществляется вставка. Выходными параметрами про-
цедур является указатель на начало списка (который возможно изме-
нится) и указатель текущего элемента, который показывает на вновь
созданный элемент:
procedure Ins_CicleDubleList(DataElem: TypeData;
var ptrHead, ptrCurrent: PElement);
{Вставка элемента в циклический двунаправленный список
справа от элемента, на который указывает ptrCurrent}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
New(ptrAddition);
ptrAddition^.Data := DataElem;
if ptrHead = nil then begin {список пуст}
{создаем первый элемент списка}
ptrAddition^.Next := ptrAddition; {петля из 1 элемента}
ptrAddition^.Last := ptrAddition;