Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач по алгоритмизации.doc
Скачиваний:
10
Добавлен:
06.05.2019
Размер:
1.33 Mб
Скачать

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

Государственное образовательное учреждение высшего профессионального образования

«Тюменский государственный нефтегазовый университет»

Институт менеджмента и бизнеса

Кафедра Математические методы в экономике

КУРСОВАЯ РАБОТА

по курсу Основы алгоритмизации и языки программирования

на тему Красно-черные деревья

Выполнил: ст. гр. ММЭ-09-1

Кондрашева Мария

Руководитель: ст. преподаватель

Наурусова Г. А.

Тюмень,2011

Содержание

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

«Тюменский государственный нефтегазовый университет» 1

Институт менеджмента и бизнеса 1

Содержание 2

Введение 3

1. Структуры данных: деревья 5

1.1 Структуры данных 5

1.2 Деревья 6

1.3 Бинарные деревья 11

1.4 Бинарные деревья поиска 11

1.5 Красно-черные деревья 13

1.6 Операции над красно-черными деревьями 16

1.6.1 Повороты 16

1.6.2 Вставка 17

1.6.3 Удаление 25

1.6.4 Поиск узла с заданным ключом 31

1.6.5 Поиск минимума и максимума 32

2. Автоматизация операций над красно-чёрными деревьями 34

заключение 46

список литературы: 47

Приложение 1. Листинг программы 48

Введение

Множество — это фундаментальное понятие, как в математике, так и в теории вычислительных машин. Тогда как математические множества остаются неизменными, множества, которые обрабатываются в ходе выполнения алгоритмов, могут с течением времени разрастаться, уменьшаться, или подвергаться другим изменениям. Назовем такие множества динамическими (dynamic). В данной работе описывается метод представления конечных динамических множеств в виде красно-чёрных деревьев – один из основных методов представления конечных динамических множеств.

Объектом данной работы является разновидность структур данных красно-чёрные деревья.

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

В качестве предмета данной работы выступают операции, выполняемые над красно-чёрными деревьями.

Целью данной работы является изучение красно-чёрных деревьев и исследование их основных свойств, а также автоматизация операций для работы с ними на Turbo Pascal 7.0. Для этого необходимо выполнить следующие задачи:

  • исследовать основные понятия красно-чёрных деревьев;

  • изучить основные операции, выполняемые над красно-чёрными деревьями;

  • автоматизировать основные операции, выполняемые над красно-чёрными деревьями, в общем виде на языке Turbo Pascal;

  • сделать выводы по выполненной работе.

Красно-чёрные деревья являются одними из наиболее активно используемых на практике самобалансирующихся деревьев поиска. В частности, контейнер map в большинстве реализаций библиотеки STL языка C++, класс TreeMap языка Java, так же, как и многие другие реализации ассоциативного массива в различных библиотеках, основаны на красно-чёрных деревьях.

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

1. Структуры данных: деревья

1.1 Структуры данных

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

Рис. 1. Классификация структур данных.

Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные, композитные, сложные). Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных - простые или в свою очередь интегрированные. Интегрированные структуры данных конструируются программистом с использованием средств интеграции данных, предоставляемых языками программирования.

В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки).

Весьма важный признак структуры данных - ее изменчивость - изменение числа элементов и (или) связей между элементами структуры. В определении изменчивости структуры не отражен факт изменения значений элементов данных, поскольку в этом случае все структуры данных имели бы свойство изменчивости. По признаку изменчивости различают структуры СТАТИЧЕСКИЕ, ПОЛУСТАТИЧЕСКИЕ, ДИНАМИЧЕСКИЕ. Классификация структур данных по признаку изменчивости приведена на рис. 1. Базовые структуры данных, статические, полустатические и динамические характерны для оперативной памяти и часто называются оперативными структурами. Файловые структуры соответствуют структурам данных для внешней памяти.

Важный признак структуры данных - характер упорядоченности ее элементов. По этому признаку структуры можно делить на ЛИНЕЙНЫЕ И НЕЛИНЕЙНЫЕ структуры.

В зависимости от характера взаимного расположения элементов в памяти линейные структуры можно разделить на структуры с ПОСЛЕДОВАТЕЛЬНЫМ распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с ПРОИЗВОЛЬНЫМ СВЯЗНЫМ распределением элементов в памяти (односвязные, двусвязные списки). Пример нелинейных структур - многосвязные списки, деревья, графы.

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

Информация по каждому типу однозначно определяет :

1) структуру хранения данных указанного типа, т.е. выделение памяти и представление данных в ней, с одной стороны, и интерпретирование двоичного представления, с другой;

2) множество допустимых значений, которые может иметь тот или иной объект описываемого типа;

3) множество допустимых операций, которые применимы к объекту описываемого типа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]