СХЕМА формировании списка

Операции со списками.

К основным операциям работы со списками относят: 1)добавление элемента в список;2)просмотр списка;3) вставка элемента;4) удаление элемента; 5) удаление всего списка.

Добавление элемента

Для списка fifo.

Создается новый элемент и он стыкуется с последним элементом списка, например делается проход по всему списку и определяется адрес последнего элемента, пусть адрес последнего элемента находиться в указателе С.

Создается новый элемент адресная часть которого в указателе F. Формируется его информационная часть, адресная часть равная nil и устанавливается связь предпоследнего элемента с созданным.

Пример текста добавления узла.

New(e);

E^.i nfo:=10;

E^.Next:=NIL;

C^.NEXT:=E;

Для списка Lifo.

Создается новый элемент адрес которого в указателе Е. формируется информационная часть. Этот элемент связывается с первым элементом и назначается 1.

Пример добавление узла в список

NEw(e);

E^.info:=10;

E^.next:=b;

B:=e;

Просмотр списка

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

Основой этой операции является переход о одного элемента списка к другому начиная с вершины списка.

Пример вывода списка

.

Var

B,c:pn;

Begin

C:=b;

While c<>nil do

Begin

Write(c^.info);

C:=c^.next;

End;

Пример

Необходимо заменить информационную часть четвертого элемента помесив в него какое либо значение например 10.

.

.

Var

B,c:pn;

I:byte;

Begin

.

.

C:=b;

I:=1;

While (i<>4)and(c<>nil) do {c^.next<>nil- остановиться на последнем}

Begin

C:=c^.next;

Inc(i);

End;

If i=4 then c^.info:=10;

Else

Write(‘в списке менее 4-х элеменов’);

.

.

.

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

Пример обращение к элементам, которые следует за элементом, на который указывает указатель С.

Пример:

C^.next^.info:=50;

C^.next^.next ^.info:=100;

Вставка элемента

Позволяет добавить новый элемент между двумя существующими.

Пусть требуется добавить новый узел в список после узла на который указывает указатель С.

Для решения этой задачи необходимо:

1.выделить место в памяти для нового узла, пусть адрес этого узла расположен в указателе Е.

2.связать новый узел с узлом следующим за С.

3.связать узел на который указывает С с созданным узлом.

4.заполнить информационную часть узла.

Для выполнения отмеченных действий необходимо выполнить следующую последовательность операторов:

New(e);

E^.next:=c^.next;

C^.next:=e;

E^.infj:=x;


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



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