Создание списка из N узлов за счет добавления
Рис. 22. Включение узла в начало списка
Procedure Ins_First(var first: PList); var p: PList; begin new(p); readln(p^.info); | { first – указатель на первый узел списка } { создание узла списка } { заполнение информационного поля узла } | ||
p^.link:=first; first:=p; | { установка связи между вставленным узлом и списком } { новое значение указателя на первый узел } | ||
end; | |||
Используя операцию включения элемента в начало списка, можно сформировать список из n элементов: начиная с пустого списка, следует n раз выделить память для узлов списка и последовательно добавить узлы в начало списка. Эти операции можно реализовать с помощью любого итерационного цикла. Порядок следования узлов получается обратным, т.е. первым в списке оказывается элемент, который был добавлен последним.
Procedure Create1(var first: PList; n: byte); var p: PList; i: byte; begin first:=nil; | { first – указатель на первый узел списка, n – количество узлов в списке } { создание пустого списка } | |
for i:=1 to n do begin | ||
new(p); | { создание узла списка } | |
readln(p^.info); | { заполнение информационного поля узла } | |
p^.link:=first; | { установка связи между вставленным узлом и списком } | |
first:=p; | { новое значение указателя на первый узел } | |
end; end; | ||
Заметим, что создание первого узла списка и включение его в пустой список (“перед” несуществующим узлом) выполняется точно так же, как включение в непустой список любого другого узла (см. рис. 23).