![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задачи включения элемента в линейный однонаправленный список без головного элемента.
Графическое представление выполняемых действий дано на рис. 21
Формирование пустого списка.
procedure create_empty_list (var first: Telem); Begin first = nil; End; Формирование очередного элемента списка.
procedure create_new_elem(var p: Telem); Begin New (p); writeln ( 'введите значение первого информационного поля: '); readln (p^.inf1); writeln (' введите значение второго информационного поля: '); readln (p^.inf2); p^.next: = nil; { все поля элемента должны быть инициализированы } End; Подсчет числа элементов списка.
function count_el(first: Telem): integer; Var k: integer; q: Telem; Begin if first = nil then k: =0 { список пуст } Else begin { список существует } k: =1; { в списке есть хотя бы один элемент} q: =first; {перебор элементов списка начинается с первого} while q^.next < > nil do Begin k: =k+1; q: =q^.next; {переход к следующему элементу списка} End; End; count_el: =k; End;
ПРИМЕЧАНИЕ: аналогично может быть написана процедура, например, печати списка, поиска адреса последнего элемента и др.
Вставка элемента в начало списка.
procedure ins_beg_list(p: Telem; {адрес включаемого элемента} var first: Telem); 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: Telem; var first: Telem); 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;
|