Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
структуры и алгоритмы / Лекции_лабор_структ.doc
Скачиваний:
56
Добавлен:
04.06.2015
Размер:
2.98 Mб
Скачать

119

Н.П.Воробович

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

Красноярск

2002

Министерство образования Российской Федерации

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

Н.П.Воробович

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

Утверждено редакционно-издательским советом СибГТУ

в качестве учебного пособия для студентов специальности 220400

всех форм обучения

Красноярск

2002

Воробович Н.П. Структуры данных. Учебное пособие. - Красноярск: СибГТУ, 2002 -120с.

Учебное пособие предназначено для студентов специальности 220400 "Программное обеспечение вычислительной техники и автоматизированных систем" всех форм обучения, изучающих курс "Структуры и алгоритмы обработки данных".

Рецензенты: доцент Якимов С.П. (СибГТУ);

профессор Воловик М.А. (КГТУ

ã Сибирский государственный технологический университет, 2002

Введение

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

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

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

В учебное пособие включены задачи и упражнения для закрепления материала. Задачи и упражнения выполняются на персональном компьютере и рассчитаны на 2-4 часа. Номера задач и упражнений назначаются преподавателем. Контроль хода выполнения задач и упражнений осуществляется преподавателем демонстрацией студентом на персональном компьютере программных компонентов, созданных студентом в ходе выполнения соответствующей задачи.

1 Основные понятия о типах и структурах данных

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

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

Более крупные и содержательные, нежели бит, "строительные блоки" для организации произвольных данных можно получить на основе понятия "тип данного". Тип данного определяется множеством значений данного и набором операций, которое можно выполнять над этими значениями в соответствии с их известными свойствами.

В языках программирования чаще всего используются следующие типы данных: INTEGER (целый), REAL (вещественный), CHARACTER (символьный), BOOLEAR (логический), ROINTER (указательный).

Особенностью данного того или иного типа является простота организации, поэтому данное любого типа называется простым (неструктурированным).

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

Структуру данных S можно определить: S = (D,R ), где D - множество элементов данных; R - множество отношений между элементами данных.

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

Пару, содержащую элемент данных и ассоциированный с ним элемент отношений, будем называть элементом структуры. При этом связи или отношения элемента данных с другими элементами данных одновременно являются связями с соответствующими элементами структуры. При этом связи, или отношения, элемента данных с другими элементами данных одновременно являются связями с соответствующими элементами структуры (рис. 1.1).

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

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

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

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

Таким образом, каждую структуру данных можно характеризовать ее логическим (абстрактным) и физическим (конкретным) представлениями, а также совокупностью операций на этих двух уровнях представления структуры (рис. 1.4).

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

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

Весьма важный признак структуры данных - ее изменчивость - изменение числа элементов и(или) связей между элементами структуры. По признаку изменчивости будем различать структуры статические, полустатические и динамические.

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

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

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

Соседние файлы в папке структуры и алгоритмы