Пример 6. Процедура удаления звена из списка
Пример 5. Процедура вывода элементов списка на экран
Пример 4. Процедура формирования списка натуральных чисел вводимых с клавиатуры.
Основные операции со списком.
1. Формирование списка
2. Вывод содержимого (просмотр элементов) списка на экран
3. Удаление звена из списка
4. Включение звена в список
5. Поиск элемента в списке
Чтобы оперировать с элементами списка единообразно и просто, полезно ввести в употребление заглавное звено список. Информационную часть заглавного звена можно не использовать или использовать для побочных целей, например, для хранения величины – количества звеньев списка. Ссылочная часть заглавного звена содержит ссылку на первое звено списка, таким образом, у каждого звена списка будет “предыдущее” звено.
Ввод числа 0 означает окончание формирования списка. Пусть u и p – имена ссылок на заглавный и текущий звенья списка.
Алгоритм:
Сначала выделяем место в памяти для заглавного звена New(u), текущая ссылка - р вначале указывает на заглавное звено;
Далее, если вводится число неравное нулю, то с помощью ссылки p^.sled формируется очередное звено списка, и текущий указатель р переводится на это звено
Procedure form;
var s:integer;
Begin
New(u); p:=u; u^.sled:=nil; Writeln(‘введите список натуральных чисел, окончание ввода - 0’);
Readln(s);
While s<>0 do
begin new (p^.sled);p:=p^.sled; p^.inf:=s; p^.sled:=nil;
readln(s);
end; writeln
End;
Алгоритм:
Текущую ссылку р связываем с первым звеном списка (u^.sled -имя указателя на первое звено);
Затем связываемся со вторым звеном, изменив значение р на значение p^.sled, и продолжаем цикл просмотра элементов списка, пока выполняется условие p<>nil. Если список был пустым (было выполнено отношение p=nil), то тело цикла не выполнится ни разу и не будет выведено ни одного числа.
Procedure print;
Var p:ss;
Begin p:=u^.sled;
While p<>nil do
begin write (p^.inf, ‘ ‘);
P:=p^.sled;
end; writeln;
End;
Напишем процедуру, удаляющею звено из списка с помощью ссылки р на звено, за которым следует удаляемое звено.
Операция удаления звена из списка требует изменения лишь одной ссылки, что геометрически выглядит как изменение одной стрелки:
Список до удаления звена с элементом с
![]() |