Лекция: Dispose(p);
{удаление бывшего первого элемента }
End;
End
End
Else
writeln ('список пуст, удаление первого элемента невозможно');
End;
Удаление элемента из конца списка.
Нужен запрос на удаление
Procedure Del_end_list( Var First :el);
Begin
If First < > Nil then
Begin {список не пуст}
if fiRst^.next = nil then
begin{в списке — единственный элемент }
p := first;
Dispose (p);
First := nil;
End
Else
begin{в списке больше одного элемента }
Q := First;
T := First;
{цикл поиска адреса последнего элемента}
While q^.Next < > Nil do
Begin
T := q;{запоминание адреса текущего элемента}
q:=q^.Next;{переход к следующему элементу}
End;
{после окончания цикла Т — адрес предпоследнего,
а Q — адрес последнего элемента списка}
dispose (q);{удаление последнего элемента}
t^.next := nil;{предпоследний элемент стал
последним}
End
End
Else
writeln ('список пуст, удаление элемента невозможно');
End;
ПРИМЕЧАНИЕ. После исключения элемента из списка этот элемент может не удаляться из памяти, а через список параметров передан на какую-либо обработку, если этого требует алгоритм обработки данных.
Удаление элемента из середины списка (i-ого элемента).
Procedure Del_I_elem ( first: el; i: integer);
Var
t, q, r: el;
K ,n: integer;
Begin
n := count_el(first);{определение числа элементов списка}
if (i < 1 ) or ( i > n ) then
Begin
writeln ('iзадано некорректно');
Exit;
End
Else
Begin
{нужно добавить подтверждение удаления }
if i = 1 then
begin{удаляется 1 элемент}
t := first;
first:= first^.next;