Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Исключение из списка узла, на который



Предварительно установлен указатель

Исключение узла, на который предварительно установлен указатель, не требует поиска предыдущего узла (рис. 38). После исключения узла из списка и возвращения его элемента хранения в кучу, доступ к этому узлу по предварительно установленному указателю более невозможен, поэтому данному указателю следует присвоить значение NIL.


Рис. 38. Исключение узла, на который предварительно установлен указатель

Procedure Del_Double(head: PDlist; { head – указатель на “голову” списка }
var p: PDlist); { p – указатель на исключаемый узел }
begin  
if (head <> nil) and (head^.next <> head) { список не пуст и указатель p }
and (head^.prev <> head) and (p <> nil) then { установлен? }
begin  
p^.prev^.next:=p^.next; { изменить поле связи предыдущего узла }
p^.next^.prev:=p^.prev; { изменить поле связи следующего узла }
dispose(p); p:=nil { элемент хранения исключаемого узла вернуть в кучу }
end;  
end;  
         

Операция поиска узла в двусвязном циклическом списке и операция разрушения выполняются так же, как в односвязном циклическом списке, только проход возможен в любом из двух направлений: с использованием атрибута связи next (т.е. “вперед”) или с использованием атрибута связи prev (т.е. “назад”).

Двусвязные циклические списки, как и односвязные, можно использовать для реализации разнообразных линейных структур.





Дата публикования: 2014-11-26; Прочитано: 272 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...