- •Министерство общего и профессионального образования Российской Федерации
- •Содержание
- •Введение
- •1.Структуры данных
- •1.1 Треугольные массивы 2
- •1.2 Списки 3
- •Простые списки
- •Неупорядоченные списки
- •Связанные списки
- •1.3 Стеки 6
- •1.4 Очереди. Деки. 7
- •1.5 Деревья 8
- •Обход деревьев
- •Упорядоченные деревья
- •Добавление элементов
- •Сбалансированные деревья
- •Красно-черные деревья 12
- •Деревья со случайным поиском 13
- •2.Сортировка
- •2.1 Внутренняя сортировка 16
- •Сортировка путем вставок
- •Обменная сортировка
- •Метод пузырька
- •Параллельная сортировка Бэтчера
- •Алгоритм сортировки Бетчера Быстрая сортировка
- •Модификации метода быстрой сортировки
- •Сортировка посредством выбора
- •Фаза 2: сортировка
- •Сортировка методом слияния 18
- •Сортировка методом распределения
- •Поразрядная сортировка
- •Поразрядная сортировка для списков
- •2.2 Внешняя сортировка 19
- •Прямое слияние
- •Естественное слияние
- •Сбалансированное многопутевое слияние
- •3.Поиск
- •3.1 Последовательный поиск 20
- •3.2 Поиск путем сравнения ключей
- •Поиск в упорядоченной таблице Бинарный поиск
- •3.3 Хеширование 21
- •4.Сетевые алгоритмы 22
- •4.1 Представления сетей
- •Управление узлами и связями
- •4.2 Обход сети
- •4.3 Наименьший каркас дерева
- •4.4 Кратчайший путь
- •Расстановка меток
- •Коррекция меток
- •5.Задачи для лабораторных работ
- •Заключение
- •Библиографический список
1.Структуры данных
Структуры данных и алгоритмы служат теми материалами, из которых строятся программы 1.
Под структурой данных в общем случае понимают множество элементов данных и множество связей между ними. Такое определение охватывает все возможные подходы к структуризации данных, но в каждой конкретной задаче используются те или иные его аспекты. Поэтому вводится дополнительная классификация структур данных, направления которой соответствуют различным аспектам их рассмотрения. Прежде чем приступать к изучению конкретных структур данных, необходимо привести их общую классификацию по нескольким признакам.
Понятие "физическая структура данных" отражает способ физического представления данных в памяти машины и называется еще структурой хранения, внутренней структурой или структурой памяти. В настоящем пособии физическая структура данных не рассматривается.
Рассмотрение структуры данных без учета ее представления в машинной памяти называется абстрактной или логической структурой. В общем случае между логической и соответствующей ей физической структурами существует различие, степень которого зависит от самой структуры и особенностей той среды, в которой она должна быть отражена.
Различаются простые (базовые, примитивные) структуры (типы) данных и интегрированные (структурированные, композитные, сложные). Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. С логической точки зрения простые данные являются неделимыми единицами. Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных – простые или в свою очередь интегрированные. Интегрированные структуры данных конструируются программистом с использованием средств интеграции данных, предоставляемых языками программирования.
Весьма важный признак структуры данных - ее изменчивость - изменение числа элементов и (или) связей между элементами структуры. В определении изменчивости структуры не отражен факт изменения значений элементов данных, поскольку в этом случае все структуры данных имели бы свойство изменчивости. По признаку изменчивости различают структуры статические, полустатические и динамические. Классификация структур данных по признаку изменчивости приведена ниже на рис. 1. Базовые структуры данных, статические, полустатические и динамические характерны для оперативной памяти и часто называются оперативными структурами. Файловые структуры соответствуют структурам данных для внешней памяти.
Рис. 1. Классификация структур данных
Важный признак структуры данных - характер упорядоченности ее элементов. По этому признаку структуры можно делить на линейные и нелинейные структуры.
В зависимости от характера взаимного расположения элементов в памяти линейные структуры можно разделить на структуры с последовательным распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с произвольным связным распределением элементов в памяти (односвязные, двусвязные списки). Пример нелинейных структур - многосвязные списки, деревья, графы.
В языках программирования понятие "структуры данных" тесно связано с понятием "типы данных". Любые данные, т.е. константы, переменные, значения функций или выражения, характеризуются своими типами.
Информация по каждому типу однозначно определяет :
структуру хранения данных указанного типа, т.е. выделение памяти и представление данных в ней, с одной стороны, и интерпретация двоичного представления, с другой;
множество допустимых значений, которые может принимать тот или иной объект описываемого типа;
множество допустимых операций, которые применимы к объекту описываемого типа.
Далее в текущем разделе приводится описание интегрированных структур данных, которые широко распространены на практике и используются в настоящем пособии.
