Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Добавление компонент в середину списка




Совсем не трудно вставить компоненту (NPoint) в середину списка, когда имеется ссылка на компоненту, предшествующую данной в реорганизованном списке. Назовём её OPoint.

NPoint^.next:= OPoint^.next;

OPoint^next:= NPoint;

Эти операторы будут правильно работать и в том случае, если OPoint – последняя компонента в списке, т.е. OPoint^.next = nil. Если OPoint = nil, то выполнение этих операторов приводит к ошибке.

procedure InsertAfter (OPoint, NPoint: link);

begin NPoint^.next:= OPoint^.next;

OPoint^next:= NPoint end;

Труднее организовать процедуру InsertBefore, т.к. тогда новую компоненту надо вставлять перед компонентой, на которую у неё есть ссылка.

procedure InsertBefore (OPoint, NPoint: link; var head: link);

var cur: link;

begin If OPoint = head then begin

NPoint^.next:= head;

head:= NPoint; end

else begin

cur:= head;

while cur^.next<>OPoint do cur:= cor^.next;

cur^.next:= NPoint;

NPoint^next:= OPoint end;

end;

Имеется ещё один способ реализации процедуры InsertBefore. Им пользуются тогда, когда кол-во информации, содержащейся в компонентах списка не очень велико, а список достаточно длинный. Сначала новая компонента с помощью процедуры InsertAfter помещается в список, но попадает не на своё место, а затем меняется местами содержимое компонент.

procedure InsertBefore2 (OPoint, NPoint: link);

var temp:Point; begin NPoint^.next:=OPoint^.next; OPoint^.next:=NPoint; temp:=OPoint^; OPoint^:=NPoint^; NPoint^:= temp; end;

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных