Исключение узла из начала списка

Узлов в конец списка

Создание списка из N узлов за счет добавления

Рис. 23. Включение узла в пустой список

Первый узел создается отдельно (т.к. включить узел «за» несуществующим узлом невозможно), а остальные (n-1) узлов создаются и включаются в хвост списка одинаковым образом. При этом удобно использовать вспомогательный указатель на последний добавленный узел. Значение этого указателя изменяется в процессе создания списка, значение указателя на первый узел списка не изменяется после создания первого узла. Порядок следования узлов в списке получается прямым, т.к. первым является тот узел, который был включен в список первым.

Procedure Create2(var first: PList; n: byte); var p, last: PList; i: byte; { first – указатель на первый узел списка, n – количество узлов в списке } { last – указатель на последний узел списка }
begin if n=0 then first:=nil else begin   { создание пустого списка }
new(first); { создание первого узла списка }
readln(first^.info); { заполнение информационного поля первого узла }
first^.link:=nil; { первый узел пока является в списке единственным }
last:=first; { установка указателя на последний вставленный узел}
for i:=2 to n do begin { создание остальных (n-1) узлов списка }
new(p); { создание узла списка }
readln(p^.info); { заполнение информационного поля узла }
last^.link:=p; { установка связи между списком и вставленным узлом }
last:=p; { новое значение указателя на последний узел }
end; end; end;  
     

Для того чтобы исключить из списка первый элемент, необходимо установить на него вспомогательный указатель, присвоить указателю на начало списка адрес второго элемента списка, после чего область памяти, занятую первым элементом списка, вернуть в кучу. Данную последовательность операций иллюстрирует рис. 24.

 
 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: