Основы программирования. Указатели. Динамические структуры данных. Абстрактные типы данных. Классы - 26 стр.

UptoLike

Составители: 

28
5. Удаление текущего элемента.
Пусть указатель p хранит адрес текущего элемента.
first
last
p
Перед освобождением памяти под текущий элемент следует перенаправить указа-
тель next у предыдущего элемента на следующий, а у следующего указатель
prevна предыдущий. Если же следующего элемента нет, то необходимо уда-
лить последний элемент и скорректировать переменную last. Аналогично если
предыдущего элемента нет, то удаляется первый, и необходимо скорректировать
first.
if p^.prev<>nil then
p^.prev^.next:=p^.next
else first:=p^.next;
if p^.next<>nil then
p^.next^.prev:=p^.prev
else last:=p^.prev;
Dispose(p);
first
last
p
Заметим, что если удаляется единственный элемент, то указатели first и
last получают значение nil, т.е. список становится пустым.
В заключение приведем пример, иллюстрирующий высокую эффективность
списков в некоторых задачах.
Пример. Объединение списков.
Имеется два списка, заданные указателями на начало и конец.
first1
last1
...
first2
last2
...
Требуется добавить содержимое второго списка в конец первого, очистив
при этом второй список.