Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Procedure Ins_beg_list(P: el; {адрес включаемого элемента}
Var First: el);
Begin
If First = Nil Then
Begin
First:= p;
P^.next:= nil { можно не делать, так как уже сделано при
формировании этого элемента}
End
Else
Begin
P^.Next:=First;{ссылка на бывший первым элемент}
First:=p;{ включаемый элемент становится первым }
End;
End;
Включение элемента в конец списка.
Procedure Ins_end_list(P: el; Var First: el);
Begin
If First = Nil Then
First:=p
Else
Begin
q:=First; {цикл поиска адреса последнего элемента}
While q^.Next <> Nil do
q:=q^.Next;
q^.Next:=p;{ссылка с бывшего последнего
на включаемый элемент}
P^.Next:=Nil; {не обязательно }
End;
End;
Включение в середину (после i-ого элемента).
Procedure Ins_after_I (first: el; p: el; i: integer);
Var
t, q: 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
t:= first;{адрес 1 элемента}
q:= t^.next; {адрес 2 элемента}
t^.next:= p;
p^.next:= q;
End
Else
if i = n then
begin { см. случай вставки после последнего
элемента}
...
End
else {вставка в «середину» списка}
Begin
t:= first;
k:= 1;
while (k < i) do
begin {поиск адреса i-го элемента }
k:= k + 1;
t:= t^.next;
End;
q:= t^.next;
{найдены адреса i-го (t) и i+1 -го (q) элементов }
t^.next:= p;
p^.next:= q;
{элемент с адресом р вставлен}
End;
End;
End;
ПРИМЕЧАНИЕ: аналогично рассуждая и применяя графическое представление действия, можно решить задачу включения элемента перед i-ым. Строго говоря, такая задача не эквивалентна задаче включения элемента после (i-1)-го.
Дата публикования: 2014-11-04; Прочитано: 224 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!