Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояс. записка.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
171.52 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ХАРЬКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СТРОИТЕЛЬСТВА И АРХИТЕКТУРЫ

Кафедра компьютерного моделирования и информационных технологий

Пояснительная записка к курсовому проекту

Тема:

«Линейный двунаправленный неупорядоченный список»

Выполнила:

ст .гр .ЭКБ-21

Проверил:

Литвиненко Е.Н.

Харьков 2009

Содержание

Введение…………………………………………………………………… 3

Постановка задачи……………………………………….………….4

Использование программы……………………………………… .4

Раздел 1. Теоретическая часть……………………………………….……5

Раздел 2. Алгоритмическая част…………………………………………..7

2.1 Создание списка………………………………………………….7

2.2 Добавление элемента в список………………………………….7

2.3 Удаление …………………………………………………………8

2.4 Просмотр списка…………………………………………………9

2.5 Синтаксический анализатор…………………………………….10

Раздел 3 Техническое задание…………………………………………….11

Раздел 4…………………………………………………………………….13

4.1 Описание программы ………………………………………….13

4.2 Руководство пользователя……………………………………..14

Вывод………………………………………………………………………15

Список использованной литературы………………………………….16

Приложение А……………………………………………………………..17

Приложение Б……………………………………………………………...29

Введение

Линейные списки находят широкое применение в приложениях, где непредсказуемы требования на размер памяти, необходимой для хранения данных; большое число сложных операций над данными, особенно включений и исключений. На базе линейных списков могут строится стеки, очереди и деки.

Линейные списки используются для представления таблиц - в тех случаях, когда размер таблицы может существенно изменяться в процессе ее существования.

Постановка задачи

При помощи среды визуального проектирования Delphi создать программу-оболочку для управления структурой данных "список". Реализовать операции создания списка, просмотра содержимого списка, удаление списка, добавления элемента в список, удаление заданного элемента из списка, поиска в списке по заданному полю. Также реализовать встроенный в программу синтаксический анализатор, при помощи которого производить вывод на экран искомого множества элементов списка (синтаксический анализатор должен работать как минимум по трем полям и использовать как минимум три булевых оператора).

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

Элемент списка – принтер;

1. тип;

2. качество;

3. фирма изготовитель;

4 .название;

Осуществить поиск по:

1. названию;

2. фирме изготовителю;

3. качеству

Использование программы:

  1. можно составить базу данных содержащую сведенья о принтерах;

  2. можно исправить уже имеющуюся базу данных;

  3. можно просмотреть все сведенья о принтерах, содержащихся в базе данных;

  4. можно осуществить поиск принтеров по заданным параметрам.

Раздел 1 Теоретическая часть

Классический пример структуры данных последовательного доступа, в которой можно удалять и добавлять элементы в середине структуры, -- это линейный список. Различают однонаправленный и двунаправленный списки (иногда говорят односвязный и двусвязный).

Элементы списка как бы выстроены в цепочку друг за другом. У списка есть начало и конец. Имеется также указатель списка, который располагается между элементами. Если мысленно вообразить, что соседние элементы списка связаны между собой веревкой, то указатель -- это ленточка, которая вешается на веревку. В любой момент времени в списке доступны лишь два элемента -- элементы до указателя и за указателем. (рис. 1.1)

Рис. 1.1- Структура однонаправленного списка

В двунаправленном списке можно добавлять и удалять элементы до и за указателем. Считают, что вслед за последним элементом списка вновь следует голова списка, т.е. список зациклен в кольцо.(рис. 1.2)

Рис. 1.2 – Структура двунаправленного списка

Линейный список неудобен тем, что при попытке вставить некоторый элемент перед текущим элементом, требуется обойти почти весь список, начиная с заголовка, чтобы изменить значение указателя в предыдущем элементе списка. Чтобы устранить данный недостаток вводится второй указатель в каждом элементе списка. Первый указатель связывает данный элемент со следующим, а второй с предыдущим. Такая организация динамической структуры данных получила название линейного двунаправленного списка.

Интересным свойством такого списка является то, что для доступа к его элементам вовсе не обязательно хранить указатель на первый элемент. Достаточно иметь указатель на любой элемент списка. Первый элемент всегда можно найти по цепочке указателей на предыдущие элементы, а последний - по цепочке указателей на следующие. Но наличие указателя на заголовок списка в ряде случаев ускоряет работу со списком. Двунаправленные списки ориентированы на обработку как в прямом, так и в обратном направлении. Для этого в звенья связи дополнительно вводится адрес, реализующий связь типа «предыдущий». Для задания двунаправленной списковой структуры необходима следующая ассоциативная информация:

-указатель списка, содержащий адрес первого и последнего элементов;

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