Лекция: 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;

еще рефераты
Еще работы по информатике