Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие часть 1.doc
Скачиваний:
60
Добавлен:
24.09.2019
Размер:
6.98 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

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

С.Ю. Ржеуцкая, И.А. Андрианов

СТРУКТУРЫ ДАННЫХ И

АЛГОРИТМЫ ОБРАБОТКИ. Часть 1

Утверждено редакционно- издательским советом университета в качестве учебного пособия

Вологда 2005

УДК 681.3.06

ББК Р23

Рецензенты:

Сипин А.С., к.ф-м.н, доцент кафедры Прикладной математики ВГПУ

Кузнецов Р.Н., директор учебного центра "Мезон"

Ржеуцкая С.Ю., Андрианов И.А.

Структуры и алгоритмы обработки данных. Часть 1: Учеб. пособие. - Вологда: ВоГТУ, 2005. – 232 с.

ISBN 5-87851-152-5

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

УДК 681.3.06

ББК Р23

©Вологодский государственный технический университет, 2005

ISBN 5-87851-152-5 ©Ржеуцкая С.Ю.,

Андрианов И.А.

Введение

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

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

Несмотря на динамичное развитие различных направлений информационных технологий, в этой области положение довольно стабильно. Конечно, новые задачи часто требуют нестандартных решений, поэтому набор востребованных структур данных и алгоритмов постоянно пополняется. Тем не менее, основные способы организации данных хорошо проработаны, имеется несколько фундаментальных монографий по этому вопросу [7,9,2,13], набор типовых алгоритмов, которые могут найти применение при решении различных задач, также широко известен и освещен в многочисленной литературе.

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

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

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

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

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

Первая глава является вводной и посвящена определению основных понятий.

Разумеется, организацию данных в памяти компьютера и способы обработки организованных данных нельзя рассматривать отдельно друг от друга. Но в рамках данной главы сначала рассмотрим терминологию, которая относится к определению данных, а затем разберем наиболее фундаментальные понятия, касающиеся алгоритмов. Здесь уместно привести высказывание Фредерика П.Брукса. «Покажите мне ваши блок-схемы и спрячьте таблицы, и я ничего не пойму. Покажите мне таблицы, и блок-схемы мне не понадобятся — все будет очевидно и так.» Таблицы (дословный перевод английского tables) — это структуры данных, а блок-схемы, конечно же, способ записи алгоритмов. Иными словами, выбор структур данных определяет используемые алгоритмы. Возможно, это чересчур упрощенный подход, но важность грамотного выбора способов организации данных нельзя оспорить[14].

Существует несколько фундаментальных понятий, которые относятся к определению данных Это типы данных, абстрактные типы данных и структуры данных. Разберем данные понятия по порядку.