Лекция: Dispose ( t);
End
Else
if i = n then
begin{ см. случай удаления последнего элемента}
.. .
End
else{удаление из «середины» списка}
Begin
t := first;
q := nil;
k := 1;
while ( k < i ) do
begin{поиск адресов (i-1)-го и i-го элементов}
k := k + 1;
q := t;
t := t^.next;
End;
r := t^.next;
{найдены адреса i-го (t), (i-1)-го (q) и (i+1)-го (r) элементов }
q^.next := r;
dispose ( t );{удален i-ый элемент }
End;
End;
End;
Удаление всего списка с освобождением памяти.
Procedure Delete_List(Var First: el);
Var
P, q: el;
Answer: string;
Begin
If First <> Nil Then
Begin{ список не пуст }
writeln ( 'Вы хотите удалить весь список? (да/нет)' );
Readln ( answer );
if answer = 'да' then
Begin
q:=First;
p:=nil;
While ( q <> nil ) do
Begin
p:=q;
q:=q^.Next;
Dispose(p);
End;
First:=Nil;
End;
End
Else
writeln ('список пуст');
End;
Задачи на замену элементов в линейном однонаправленном списке без головного элемента.
Операция замены элемента в списке практически представляет собой комбинацию удаления и вставки элемента. Читателю дается возможность, используя представленные ранее графические приемы и примеры программ, самому написать процедуры замены элементов. Перед выполнением операции замены элемента желательно запрашивать у пользователя подтверждение замены.
Действуя аналогично, можно построить графические схемы и программы задач действий с двунаправленными списками.