Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САОД Part 1.DOC
Скачиваний:
41
Добавлен:
02.11.2018
Размер:
1.68 Mб
Скачать

Федеральное агентство по образованию

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

Рязанский государственный радиотехнический университет

СТРУКТУРЫ И АЛГОРИТМЫ

ОБРАБОТКИ ДАННЫХ

Динамические структуры данных

Методические указания

Рязань 2007

Структуры и алгоритмы обработки данных. Динамические структуры данных: Методические указания / Рязан. гос. радиотехн. ун-т; Сост. В.В. Белов, В.И. Чистякова. Рязань, 2007. 84 с.

Содержит описания четырёх тем, посвященных вопросам разработки и реализации структур и абстрактных типов данных, используемых при решении различных задач на ЭВМ: стеков, очередей, деков, односвязных и двухсвязных списков, деревьев, графов. Приведены задания и примеры выполнения к четырём лабораторным работам. Алгоритмы реализованы на языке Delphi 7 с использованием технологии объектно-ориентированного программирования.

Предназначены для студентов дневной, вечерней и заочной форм обучения специальности 230105 «Программное обеспечение вычислительной техники и автоматизированных систем» при изучении дисциплины «Структуры и алгоритмы обработки данных».

Библиогр.: 10 назв.

Компьютерный набор и верстка В.И. Чистяковой.

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

Печатается по решению методического совета Рязанского государственного радиотехнического университета.

Рецензент: кафедра вычислительной и прикладной математики Рязанского государственного радиотехнического университета (зав. кафедрой д‑р техн. наук, проф. А.Н. Пылькин)

Содержание

Введение 3

1. Терминология 3

2. Классификация структур данных по различным признакам 4

3. Типовые операции над структурами данных 4

4. Эффективность алгоритмов. O-обозначения 5

Тема 1. Стеки, очереди, деки 7

1. Стек 7

2. Операции над стеком 7

3. Реализация стека 7

4. Реализация основных операций над стеком 9

5. Использование стека для преобразования форм записи выражений. 10

6. Очередь 11

7. Операции над очередью 12

8. Дек 12

9. Операции над деком 12

10. Реализация очереди и дека 12

11. Реализация основных операций над очередью и деком 13

12. Итератор 15

Лабораторная работа 1. Стеки, очереди, деки 17

Тема 2. Односвязные и двусвязные линейные списки 21

1. Линейный список 21

2. Операции над линейным списком 22

3. Реализация линейного списка в виде односвязной динамической структуры 22

4. Реализация основных операций над односвязным списком 23

5. Циклический список 26

6. Операции над циклическим списком 26

7. Односвязная реализация циклического списка 27

8. Реализация основных операций над односвязным циклическим списком 28

9. Реализация линейного списка в виде двусвязной динамической структуры 30

10. Реализация основных операций над двусвязным списком 32

11. Циклический двусвязный список 34

12. Реализация основных операций над двусвязным циклическим списком 35

Лабораторная работа 2. Односвязные и двусвязные линейные списки 36

Тема 3. Бинарные деревья 40

1. Основные понятия и определения 40

2. Построение бинарного дерева 42

3. Операции над бинарным деревом 43

4. Реализация бинарного дерева 44

5. Реализация основных операций над бинарным деревом 45

6. Дерево выражения 48

7. Дерево поиска 50

8. Операции над деревом поиска 51

9. Реализация дерева поиска 51

10. Реализация операций над деревом поиска 52

11. Сбалансированные деревья 54

12. Включение в сбалансированное дерево 55

Лабораторная работа 3. Бинарные деревья 61

Тема 4. Графы 65

1. Основные понятия и определения 65

2. Операции над графом 67

3. Реализация графа 68

4. Реализация основных операций над ориентированным графом 70

5. Обход ориентированного графа 75

6. Вычисление расстояния между узлами ориентированного графа 77

Лабораторная работа 4. Ориентированные графы 79

Библиографический список 81

Введение

    1. Терминология

Основной сферой применения ЭВМ являются обработка больших массивов информации (данных), организация их хранения, поиск в них нужных сведений. От правильной организации данных существенно зависит эффективность работы с этими данными. Данные могут быть организованы многими различными способами; логическая или математическая модель организации данных называется структурой данных. Структура данных характеризуется ее логическим (абстрактным) и физическим (конкретным) представлениями, а также совокупностью операций над структурой. Структуры данных, реализованные в конкретном языке программирования, называются типами данных этого языка.

Логическая структура – совокупность элементов данных, между которыми существуют некоторые отношения. Элементами данных могут быть: данное некоторого типа (например, целое число, вещественное число, логическое значение и т.п.), множество данных одного типа, множество данных разных типов или структура данных.

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

Физическая структура – способ представления данных в машинной памяти.

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

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