Формирование списка типа очередь(fifo)

В этом случае добавляемый элемент присоединяется в конец списка. В отличие от предыдущего способа организации стека указатель на начало списка всегда в процессе его создания будет на первый элемент.

Используемые указатели

В-указатель на начало списка.

С-указатель, который в начале каждой итерации будет указывать на предыдущий элемент относительно созданного элемента.

Е-указатель, связанный с создаваемым узлом списка.

Пример: Формирование списка.

.

.

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:=В;


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



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