- •Структуры и алгоритмы обработки данных
- •Содержание
- •Введение
- •1. Линейные структуры данных
- •1.1 Линейный список
- •1.2 Стек
- •1.3 Очереди
- •1.3.1 Универсальная очередь неограниченного размера
- •1.3.2.2 Универсальная очередь ограниченного размера
- •2. Нелинейные структуры данных. Бинарные деревья
- •3. Алгоритмы сортировки данных в оперативной памяти
- •3.1 Сортировка массива простым выбором
- •3.2 Сортировка массива вставками (сортировка Шелла)
- •3.3 Сортировка массива обменом (сортировка Хоора)
- •3.4 Генерация массива числовых данных случайным распределением значений элементов
- •4. Внутренний поиск данных в таблице
- •1. Последовательный поиск.
- •4.1 Последовательный поиск
- •4.2 Логарифмический (бинарный ) поиск
- •4.3 Поиск с использованием перемешанной таблицы (хэш-таблицы)
- •5.Алгоритмы поиска на графе
- •5.1 Поиск кратчайшего пути. Алгоритм Дейкстры
- •Поиск кратчайшего пути. Алгоритм Флойда
- •6. Задания для выполнения лабораторных работ
- •6.1 Задания для выполнения лабораторной работы №1 «Линейные структуры данных» Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.2 Задания для выполнения лабораторной работы №2 Нелинейные структуры данных. Бинарные деревья Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.3 Задания для выполнения лабораторной работы №3 «Алгоритмы сортировки данных в оперативной памяти» Вариант 1
- •6.4. Задания для выполнения лабораторной работы №4 «Внутренний поиск данных в таблице» Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •6.5 Задания для выполнения лабораторной работы «Алгоритмы поиска на графе».
- •6.5.1 Поиск кратчайшего пути. Алгоритм Дейкстры Вариант 1
- •Вариант 2
- •6.5.2 Поиск кратчайшего пути. Алгоритм Флойда
- •Вариант 15
- •7. Задания для выполнения контрольной работы
- •Заключение
- •Список литературных первоисточников
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра программного обеспечения автоматизированных систем
Структуры и алгоритмы обработки данных
Методические указания
к выполнению практических и контрольных работ
для студентов направления (специальности)
230105
Курган 2011 г.
Кафедра «Программное обеспечение автоматизированных систем»
Дисциплина Специальная дисциплина специальности: «Программное обеспечение вычислительной техники и автоматизированных систем» (230105)
Составил канд. техн. наук, доцент А.М. Семахин
Утверждены на заседании кафедры « 3 » июня 2011 г.
Рекомендованы методическим советом университета
«_____»_______________2011 г.
Содержание
СОДЕРЖАНИЕ 3
ВВЕДЕНИЕ 4
1. Линейные структуры данных 5
1. 1 Линейный список 5
1.2 Стек 5
1.3 Очереди 6
1.3.1 Универсальная очередь неограниченного размера 6
1.3.2 Универсальная очередь ограниченного размера 6
2. Нелинейные структуры данных. Бинарные деревья 6
3. Алгоритмы сортировки данных в оперативной памяти 7
3.1 Сортировка массива простым выбором 7
3.2 Сортировка массива вставками (сортировка Шелла) 7
3.3 Сортировка массива обменом (сортировка Хоора) 7
3.4 Генерация массива числовых данных случайным распределением значений элементов 8
4. Внутренний поиск данных в таблице 10
4.1 Последовательный поиск 10
4.2 Логарифмический (бинарный) поиск 10
4.3 Поиск с использованием перемешанной таблицы
(хэш-таблицы) 10
5. Алгоритмы поиска на графах 11
5.1 Поиск кратчайшего пути. Алгоритм Дейкстры 11
5.2 Поиск кратчайшего пути. Алгоритм Флойда 12
6. Задания для выполнения лабораторных работ 17
6.1 Задания для выполнения лабораторной работы №1
«Линейные структуры данных» 17
6.2 Задания для выполнения лабораторной работы №2
«Нелинейные структуры данных. Бинарные деревья» 22
6.3 Задания для выполнения лабораторной работы №3
«Алгоритмы сортировки данных в оперативной памяти» 28
6.4. Задания для выполнения лабораторной работы №4
«Внутренний поиск данных в таблице» 28
6.5 Задания для выполнения лабораторной работы №5
«Алгоритмы поиска на графах» 33
6.5.1 Поиск кратчайшего пути. Алгоритм Дейкстры 33
6.5.2 Поиск кратчайшего пути. Алгоритм Флойда 41
7. Задания для выполнения контрольной работы 50
ЗАКЛЮЧЕНИЕ 51
СПИСОК ЛИТЕРАТУРНЫХ ПЕРВОИСТОЧНИКОВ 52
Введение
Организация данных определяет алгоритм работы программы. Выбор структуры данных – важный этап разработки программы. Структуры данных разделяются на динамические структуры и структуры фиксированного размера, линейные и нелинейные.
Структуры данных фиксированного размера – массивы, структуры. Память под данные выделяется на этапе компиляции. Необходимый объем известен до начала выполнения программы и задан в виде константы.
Динамические структуры – линейные списки, стеки, очереди и бинарные деревья. Память выделяется во время выполнения программы с помощью операций new или функций malloc(), calloc(). Объем должен быть известен до распределения памяти.
Динамические структуры данных различаются способами связи элементов и допустимыми операциями и занимают несмежные участки оперативной памяти.
Линейные структуры данных – списки, стеки, очереди. Нелинейные структуры – бинарные деревья.
Связанный список – структура данных, состоящая из единиц данных, выстроенных в цепочку. Вставка и удаление производится в любом месте связанного списка.
Стек – структура данных, вставка и удаление данных производится в вершине.
Очередь – структура данных, связанная с ожиданием. Вставка производится в конце очереди (хвост), а удаление – в начале очереди (голова).
Бинарные деревья – структура данных, состоящая из узлов, каждый из которых содержит не более двух ссылок на бинарные деревья.
Элемент динамической структуры представляет структуру, содержащую два поля: для хранения данных и указателя. Полей данных и указателей может быть несколько. Поля данных могут быть любого типа: основного, составного или типа указатель.
Динамические структуры применяют для эффективной работы с данными: сортировка и поиск данных, устранение дубликатов, представление каталогов файловых систем и компиляция выражений в машинный язык. Например, при упорядочивании массива данных организуется линейный список. Для поиска элемента данные представляются в виде бинарного дерева.
В методических указаниях приведен теоретический материал по разделам и варианты заданий по каждой теме для выполнения практических работ.
Формализация структур данных производится структурным и объектно-ориентированным методами программирования.