Шаг 2.
Линейные однонаправленные списки. Однонаправленные списки без заглавного звена
На этом шаге мы рассмотрим построение списка без заглавного звена.
Приведем алгоритм построения однонаправленного списка без заглавного звена с помощью схем "до и после" [1]. В нежеприведенной
схеме переменная phead - указатель на первый элемент списка, а t - указатель, содержащий адрес последнего (текущего)
элемента списка.
- Отведем место для указателей в статической памяти:
struct node *phead;
struct node *t;

Рис.1. Размещение указателей
- В куче резервируем место для динамического объекта:

Рис.2. Размещение объекта в куче
- Присвоим значение переменной t, и поместим в информационное поле значение элемента:
t = phead;
(*t).value = Элем;

Рис.3. Определение t
- Поместим в поле звена адрес нового динамического объекта, зарезервированного в куче:

Рис.4. Добавление нового элемента
- Переменная t должна содержать адрес последнего добавленного элемента:

Рис.5. t содержит адрес последнего элемента
- Если требуется завершить построение списка, то в поле указателя последнего элемента нужно поместить NULL:
(*t).next = NULL;
(*t).value = Элем1;

Рис.6. Результат выполнения операций
В результате построен линейный однонаправленный список без заглавного звена, содержащий два узла:

Рис.7. Конечный результат
Оформим алгоритм в виде программы на языке C++.
#include<iostream.h>
struct node
{
int value;
node *next;
};
void main ()
{
int i;
node *phead, *t;
phead = new (node);
t = phead;
(*t).value = 1;
(*t).next = new (node);
t = (*t).next;
(*t).value = 2;
(*t).next = new (node);
t = (*t).next;
(*t).value = 6;
(*t).next = new (node);
t = (*t).next;
(*t).value = 17;
(*t).next = new (node);
(*t).next = NULL;
// Вывод содержимого информационных полей списка
for (t=phead; t!=NULL; t=(*t).next)
cout<<(*t).value << " ";
}
Текст этой программы можно взять
здесь.
(1)Кнут Д. Искусство программирования для ЭВМ. Т.1: Основные алгоритмы. - M.: Мир, 1976. - 736 с.
На следующем шаге мы рассмотрим построение списка с заглавным звеном.
Предыдущий шаг
Содержание
Следующий шаг