ВУЗ:
Составители:
Рубрика:
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
Раздел 5. Двусвязные списки
Двусвязные списки в отличие от односвязных характеризуются тем, что
дают возможность просмотра элементов списка в обоих направлениях. Это
достигается посредством хранения в каждом узле двух адресов: следующего и
предыдущего элементов. Первый элемент имеет ссылку на предыдущий, рав-
ную NULL, а последний элемент имеет ссылку на следующий, равную NULL
(рис. 5.1).
Рис. 5.1. Пример двусвязного списка
// элемент списка
struct Element
{
int info; // информационное поле
Element* prev; // указатель на предыдущий элемент
Element* next; // указатель на следующий элемент
};
// структура для двусвязного списка
struct TwoWayList
{
Element* head; // адрес первого элемента списка
Element* tail; // адрес последнего элемента списка
};
Далее приводится описание процесса решения некоторых задач с при-
менением пользовательских функций.
Задача 1. Дан текстовый файл, содержащий целые числа. Написать функ-
цию построения двусвязного списка из этих чисел.
Параметрами функции являются имя файла (file_name) и структура
для хранения начала и конца списка (переменная L). Код возврата функции
будет равен 1, если список создан успешно, 0 – если создан пустой список,
-1 – если файл не был открыт.
Отдельно обрабатывается создание первого узла – выделение памяти и
заполнение данными элемента L.head. Если файл пуст, то L.head и L.-
80
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
Раздел 5. Двусвязные списки
Двусвязные списки в отличие от односвязных характеризуются тем, что
дают возможность просмотра элементов списка в обоих направлениях. Это
достигается посредством хранения в каждом узле двух адресов: следующего и
предыдущего элементов. Первый элемент имеет ссылку на предыдущий, рав-
ную NULL, а последний элемент имеет ссылку на следующий, равную NULL
(рис. 5.1).
Рис. 5.1. Пример двусвязного списка
// элемент списка
struct Element
{
int info; // информационное поле
Element* prev; // указатель на предыдущий элемент
Element* next; // указатель на следующий элемент
};
// структура для двусвязного списка
struct TwoWayList
{
Element* head; // адрес первого элемента списка
Element* tail; // адрес последнего элемента списка
};
Далее приводится описание процесса решения некоторых задач с при-
менением пользовательских функций.
Задача 1. Дан текстовый файл, содержащий целые числа. Написать функ-
цию построения двусвязного списка из этих чисел.
Параметрами функции являются имя файла (file_name) и структура
для хранения начала и конца списка (переменная L). Код возврата функции
будет равен 1, если список создан успешно, 0 – если создан пустой список,
-1 – если файл не был открыт.
Отдельно обрабатывается создание первого узла – выделение памяти и
заполнение данными элемента L.head. Если файл пуст, то L.head и L.-
80
Страницы
- « первая
- ‹ предыдущая
- …
- 78
- 79
- 80
- 81
- 82
- …
- следующая ›
- последняя »
