Автономное образовательное учреждение
высшего профессионального образования Ленинградской области
Государственный институт экономики, финансов, права и технологий
Кафедра информационных технологий и высшей математики
Дисциплина «Программирование»
Курсовая работа
на тему
«Динамические двусвязные списки»
Выполнил студент
I курса
144 группы
очного отделения
Трошин А.И.
Проверил(а):
Колхидашвили М.Р.
Сотемская М.И.
Гатчина
2015
Оглавление
I. Введение 3
II. Теоретическая часть 4
III. Задание на курсовую работу 6
IV. Описание программы 7
1. Главное окно 7
1.1. Кнопка «Добавить» 8
1.2. Кнопка «Редактирование» 11
1.3. Кнопка «Удалить» 12
1.4. Диалог сохранения файла 13
1.5. Диалог открытия файла 13
1.6. Кнопка «Поиск по» 15
V. Заключение 18
VI. Список используемой литературы 19
Приложение 1. 19
Введение
Связные списки представляют собой динамические (линейные) структуры данных (динамические цепочки звеньев), в которых однотипные элементы (звенья) каким-либо образом связаны между собой, обычно на физическом уровне. Классификация связных списков. По числу связей (и одновременно, направлению) списки бывают односвязными (однонаправленными), двусвязными (двунаправленными) и многосвязными.
Каждый элемент в списке с двойной связью имеет указатель на следующий элемент списка и указатель на предыдущий элемент списка. Двунаправленный список отличается двумя основными преимуществами. Во-первых, список может просматриваться в обоих направлениях. Это не только упрощает сортировку списка, но также позволяет пользователям базы данных просматривать данные в обоих направлениях. Во-вторых, список при нарушении одной из связей может быть восстановлен по другой связи. Это свойство имеет смысл использовать при отказах оборудования, приводящих к нарушению списка.
Целью данной курсовой работы является получение практических навыков в работе с двунаправленными списками.
Теоретическая часть
Списком называется упорядоченное множество, состоящее из переменного числа элементов, к которым применимы операции включения, исключения. Список, отражающий отношения соседства между элементами, называется линейным.
Структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом с помощью указателей, хранящихся в самих элементах, называют связанным списком. В связанном списке элементы линейно упорядочены, но порядок определяется не номерами, как в массиве, а указателями, входящими в состав элементов списка. Каждый список имеет особый элемент, называемый указателем начала списка (головой списка), который обычно по содержанию отличен от остальных элементов. В поле указателя последнего элемента списка находится специальный признак NULL, свидетельствующий о конце списка.
Линейные связные списки являются простейшими динамическими структурами данных. Из всего многообразия связанных списков можно выделить следующие основные:
однонаправленные (односвязные) списки;
двунаправленные (двусвязные) списки;
циклические (кольцевые) списки..
Для ускорения многих операций целесообразно применять переходы между элементами списка в обоих направлениях. Это реализуется с помощью двунаправленных списков, которые являются сложной динамической структурой.
Двунаправленный (двусвязный) список – это структура данных, состоящая из последовательности элементов, каждый из которых содержит информационную часть и два указателя на соседние элементы. При этом два соседних элемента должны содержать взаимные ссылки друг на друга.
Итак, каждый элемент двунаправленного списка состоит из трех полей:
1) информационного поля или поля данных;
2) ссылки на следующий элемент списка;
3) ссылки на предыдущий элемент списка.
Рис.
1. Структура двунаправленного списка.
В таком списке каждый элемент (кроме первого и последнего) связан с предыдущим и следующим за ним элементами. Каждый элемент двунаправленного списка имеет два поля с указателями: одно поле содержит ссылку на следующий элемент, другое поле– ссылку на предыдущий элемент и третье поле – информационное. Наличие ссылок на следующее звено и на предыдущее позволяет двигаться по списку от каждого звена в любом направлении: от звена к концу списка или от звена к началу списка, поэтому такой список называют двунаправленным.
Основными операциями, осуществляемыми с двунаправленными списками, являются:
создание списка;
печать (просмотр) списка;
вставка элемента в список;
удаление элемента из списка;
поиск элемента в списке
проверка пустоты списка;
удаление списка.
Особое внимание следует обратить на то, что в отличие от однонаправленного списка здесь нет необходимости обеспечивать позиционирование какого-либо указателя именно на первый элемент списка, так как благодаря двум указателям в элементах можно получить доступ к любому элементу списка из любого другого элемента, осуществляя переходы в прямом или обратном направлении.
