Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Удаление объекта, стоящего между соседними элементами списка






При удалении элемента, занимающего промежуточную позицию в списке, происходит переключение связей таким образом, что поле ссылки элемента, стоящего перед удаляемым динамическим объектом, указывает на элемент, стоящий за удаляемым объектом.

 

EICut: = List; {устанавливаем указатель на удаляемый элементв начало списка}

while EICut^.Link< > Nil do

begin

if EICut^.Data = Priznak

then

begin

EIPred^.Link: = EICut^.Link;

Disopose(EICut);

 

EICut: = EIPred^.Link

End

Else

Begin

ElPred: = EICut;

EICut: = EICut^.Link

End

End

Удаление последнего элемента списка

При удалении последнего элемента списка в поле ссылки предыдущего элемента заносится значение Nil, связь между последним и предпоследним элементами списка разрывается.

 

EIEnd: = List; {устанавливаем указатель последнего элемента списка}

 

while EIEnd^.Link < > Nil do {пока не достигнут конец списка}

Begin

ElPred: = ElEnd; {перемещение предыдущего элемента

на следующую позицию}

ElEnd: = ElEnd^.Link; {перемещение удаляемого элемента

на следующую позицию}

End;

ElPred^. Link: = Nil; {установка предыдущего элемента последним}
Dispose(EIEnd); {удаление последнего элемента}






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.