Создание первого элемента

1. Захватываем память под элемент: Spis2 *t = new Spis2;

2. Формируем информационную часть (t -> info = StrToInt(Edit1->Text));

3. Формируем адресные части: t -> next = t -> prev = NULL;

4. Устанавливаем указатели начала и конца списка на первый элемент:

begin = end = t;

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

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

Если элемент добавляется в начало списка, то выполняется следующая последовательность действий:

t -> prev = NULL; // Предыдущего нет

t -> next = begin; // Связываем новый элемент с первым

begin -> prev = t; // Изменяем адрес prev бывшего первого

begin = t; // Переставляем указатель begin на новый

В конец элемент добавляется следующим образом:

t -> next = NULL; // Следующего нет

t -> prev = end; // Связываем новый с последним

end -> next = t; // Изменяем адрес next бывшего последнего

end = t; // Изменяем указатель end

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

Просмотр списка можно выполнять с начала, или с конца списка. Просмотр с начала выполняется так же, как для однонаправленного списка (в функции View () лаб.раб. 3 необходимо изменить структурный тип).

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

1. Устанавливаем текущий указатель на конец списка: t = end;

2. Начало цикла, работающего до тех пор, пока t!= NULL.

3. Информационную часть текущего элемента t -> info выводим на экран.

4. Переставляем текущий указатель на предыдущий элемент, адрес которого находится в поле prev текущего элемента: t = t -> prev;

5. Конец цикла.


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



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