Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Включение в середину (после i-ого элемента).






 

procedure ins_after_i (first: Telem; p: Telem; i: integer);

Var

t, q: Telem;

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)-го.

 

Задачи на удаление элементов из линейного однонаправленного списка без головного элемента.

Графическое представление выполняемых действий дано на рисунке 22.

 

Удаление элемента из начала списка.

 

ПРИМЕЧАНИЕ: перед выполнением операции удаления элемента или списка желательно запрашивать у пользователя подтверждение удаления.

procedure del_beg_list (var first: Telem);

Var

p: Telem;

answer: string;

Begin

if first < > nil then

begin { список не пуст }

writeln (' вы хотите удалить первый элемент? (да/нет) ');

Readln (answer);

if answer = 'да' then

Begin

p: =first;

if p^.next = nil then {в списке один элемент }

Begin

dispose (p); {уничтожение элемента }

first: =nil; {список стал пустым }

End

Else

Begin

p: = first; {адрес удаляемого элемента }

first: =first^.next;

{адрес нового первого элемента}

Dispose(p);

{удаление бывшего первого элемента }

End;

End

End

Else

writeln (' список пуст, удаление первого элемента невозможно' );

End;

 


 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.