Студопедия

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

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

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






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






 

Графическое представление выполняемых действий дано на рис. 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;






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