![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Включение в середину (после 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;
|