Составители:
33
комого элемента в списке (функция принимает значение false). Вход-
ными параметрами являются значение, которое должен содержать иско-
мый элемент и указатель на список. В качестве выходного параметра
передается указатель, который устанавливается на найденный элемент
или остается без изменений, если элемента в списке нет:
function Find_CicleSingleList(DataElem: TypeData;
var ptrHead,
ptrCurrent: PElement): boolean;
{Поиск в циклическом однонаправленном списке}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
if ptrHead <> nil do begin {список не пуст}
ptrAddition := ptrHead;
repeat
ptrAddition := ptrAddition^.Next;
until (ptrAddition = ptrHead) or {прошли весь список}
(ptrAddition^.Data = DataElem) {элемент найден}
if ptrAddition^.Data = DataElem then begin
Find_CicleSingleList := true;
ptrCurrent := ptrAddition;
end else begin
Find_CicleSingleList := false;
end;
end else begin
Find_CicleSingleList := false;
end;
end;
Операция удаления элемента циклического однонаправленного списка
осуществляет удаление элемента, на который установлен указатель те-
кущего элемента. После удаления указатель текущего элемента уста-
навливается на следующий за удаляемым элемент списка. Здесь не тре-
буется отдельных алгоритмов удаления для крайних элементов списка,
как это было в линейных списках, но в случае удаления «первого» эле-
мента необходимо соответствующий указатель переместить на следую-
щий элемент:
procedure Del_CicleSingleList(var ptrHead, ptrCurrent:
PElement);
{Удаление элемента из циклического однонаправленного списка}
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »