
- •Введение
- •1 Основные понятия о типах и структурах данных
- •2 Простейшие статические структуры
- •2.1 Характерные свойства статических структур
- •2.2 Векторы
- •2.3 Массивы
- •2.4 Записи
- •2.5 Таблицы
- •2.6 Характерные свойства статических структур
- •3 Полустатические структуры
- •3.1 Общее понятие списковой структуры
- •3.2 Стеки
- •3.3 Очереди
- •3.4 Деки
- •4 Линейные динамические структуры
- •4.1 Характерные черты динамических структур
- •4.2 Односвязные списки
- •4.3 Двусвязные списки
- •4.4 Организация и представление линейных связных списков в памяти эвм
- •4.5 Представление стеков, очередей и деков линейными списками
- •5 Нелинейные связные структуры
- •5.1 Обобщенные двусвязные списки
- •5.2 Многосвязные списки
- •5.3 Сетевые структуры
- •5.4 Деревья
- •5.5 Бинарные деревья
- •6 Строковые данные
- •6.1 Строки
- •6.2 Векторное представление строк
- •6.3 Списковое представление строк
- •7 Файлы
- •7.1 Организация файлов на устройствах внешней памяти
- •7.2 Основные типы файлов
- •7.3 Последовательные файлы
- •7.4 Библиотечные файлы
- •7.5 Файлы прямого доступа
- •7.6 Индексно-последовательные файлы
- •8 Системы управления базами данных
- •8.1 Сущность базы данных и системы управления базами данных
- •8.2 Классификация банков данных и их составных частей
- •8.3 Иерархическая и сетевая модели баз данных
- •8.4 Реляционная модель базы данных
- •9 Задачи и упражнения
- •9.1. Векторы
- •9.2 Матрицы
- •9.3 Строки
- •9.4 Записи и таблицы
- •9.5 Списки
- •9.6 Очереди, стеки, деки
- •9.7 Двоичные деревья
- •Библиографический список
- •Содержание
- •Структуры данных
- •650049, Красноярск, пр.Мира 82.
5.5 Бинарные деревья
Весьма важный частный случай дерева - бинарное дерево. Бинарным деревом называется "m"-арное дерево при m=2. Иными словами, в бинарном дереве степень исхода для каждого узла не превышает 2. Любое "m"-арное дерево может быть преобразовано в эквивалентное ему бинарное дерево, которое проще исходного дерева с точки зрения изучения, представления в памяти и обработки. Для представления бинарного списка достаточен двусвязный список, который в общем случае не является линейным.
Переход от произвольного дерева к его бинарному эквиваленту не только облегчает анализ логической структуры, но также упрощает машинное представление, т.е. физическую структуру, дерева. При представлении бинарного дерева в машинной памяти в виде связного списка каждый элемент списка может содержать всего три поля, в одном из которых хранятся данные, соответствующие элементу, а в двух оставшихся полях - указатели старшего (левого) и младшего (правого) сыновей узла. Пример бинарного дерева и его связного спискового представления иллюстрируется на рис. 5.3, где Р означает указатель корневого элемента списка, а символ Æ - пустой указатель.
Важнейшие операции над бинарным деревом - обход его узлов, добавление и исключение некоторого поддерева.
Операции обхода, или прохождения, дерева используются для контроля информации, хранящейся в древовидной структуре, а также как составная часть для выполнения остальных операций над деревом. Для обхода бинарного дерева обычно используется одна из следующих трех процедур: обход сверху, обход слева направо и обход снизу. Каждая из трех процедур включает в себя в различном порядке следующие шаги.
1. Обработка (просмотр) корня дерева или поддерева.
2. Обход левого поддерева обработанного корня.
3. Обход правого поддерева обработанного корня.
Исключаемым или добавляемым объектом применительно к произвольному дереву является некоторое дерево. В операции исключения следует указать узел исходного дерева, играющий роль исключаемого поддерева и номер, или индекс, исключаемого поддерева, поскольку один узел в зависимости от степени исхода может играть роль корня для нескольких разных поддеревьев.
В операции включения должны быть заданы: включаемое поддерево, тот узел исходного дерева, к которому "подвешивается" в качестве ветви включаемое поддерево, и индекс, назначаемый поддереву и определяющий его местоположение среди других поддеревьев, связанных с узлом подключения.
Написание программ для организации и обработки связных списковых структур на языке программирования, в котором отсутствуют специальные средства манипулирования связными списками, требует обычно немалых усилий. И поэтому в тех программно- информационных системах, в которых связные списки играют ключевую роль, следует, по возможности, применять языки высокого уровня, содержащие средства работы со списками. К таким языкам относятся языки ЛИСП, IPL-V, СЛИП, FLPL, КОМИТ и др.
6 Строковые данные
6.1 Строки
Строкой называется конечная линейно упорядоченная последовательность простых данных одного и того же символьного типа, рассматриваемая как единое целое. Такое определение строки в общем случае предполагает, что задано множество различных символов, или литер, называемое алфавитом, и набор правил, позволяющих создавать желаемые цепочки символов. Алфавит, на основе которого создаются строки, определяется возможностями той ВС, в которой организуются и обрабатываются строковые данные.