В этом случае добавляемый элемент присоединяется в конец списка. В отличие от предыдущего способа организации стека указатель на начало списка всегда в процессе его создания будет на первый элемент.
Используемые указатели
В-указатель на начало списка.
С-указатель, который в начале каждой итерации будет указывать на предыдущий элемент относительно созданного элемента.
Е-указатель, связанный с создаваемым узлом списка.
Пример: Формирование списка.
.
.
Var
B,c,e:pn;
I:byte;
Begin
B:=nil;
C:=nil;
{1}
For i:=1 to 3 do
Begin
New(E);{2}
E^.next:=nil;{3}
E^.info:=I;{4}
Fi c=nil then b:=E{5a} else c^.next:=E;{5b}
C:=E;[6]
End;
Комментарии
1-указатели В и С устанавливаются неопределенными т.е. списка нет.
2-формируеться узел списка адрес, которого записывается в указатель Е.
3-формируеться адресное поле нового узла, куда записывается значение nil поскольку каждый новый узел считается последним.
4-формируеться информационная часть узла.
5а-если созданный узел первый (С=nil) то указатель на начало связывается с этим узлом.
5б-если созданный узел не является первым то устанавливается связь предыдущего узла с созданным.
6- указатель С связывается с созданным узлом чтобы на следующей итерации он указывал на предыдущий узел.
Чтобы список стал циклическим надо E^.next:=В;