На этом шаге мы рассмотрим поиск звена в однонаправленном кольцевом списке с включенным заглавным звеном.
Поиск компоненты с заданным ключом необходим для процедур чтения и вставки компоненты в кольцевой список. Пусть требуется найти компоненту списка с ключом Key.
Приведем функцию поиска с помощью линейного просмотра:
Function Find_Ring (pBegin: PtrRec; Key: TypeElement; var pCKey : PtrRec): Boolean; Var pAux: PtrRec; Begin Find_Ring := False; pCKey := Nil; pAux := pBegin^.pNext; {Исключим из рассмотрения заглавное звено} {Пока текущий указатель не совпадает с началом списка и } {элемент с заданным ключем не найден...} While (pAux <> pBegin) and (pAux^.Element <> Key) do pAux := pAux^.pNext; If pAux^.Element = Key Then Begin Find_Ring := True; pCKey := pAux End; End;
Отметим, что функция в качестве побочного эффекта возвращет ссылку на первое вхождение заданного элемента в указанный список.
На следующем шаге мы рассмотрим добавление звена в список с включенным заглавным звеном.