
- •Тема 1. Стеки, очереди, деки 7
- •Тема 2. Односвязные и двусвязные линейные списки 21
- •Тема 3. Бинарные деревья 40
- •Тема 4. Графы 65
- •Введение
- •Терминология
- •Классификация структур данных по различным признакам
- •Типовые операции над структурами данных
- •Эффективность алгоритмов. O-обозначения
- •Тема 1. Стеки, очереди, деки
- •Операции над стеком
- •Реализация стека
- •Реализация основных операций над стеком
- •Использование стека для преобразования форм записи выражений.
- •Очередь
- •Операции над очередью
- •Операции над деком
- •Реализация очереди и дека
- •Реализация основных операций над очередью и деком
- •Итератор
- •Лабораторная работа 1. Стеки, очереди, деки
- •Тема 2. Односвязные и двусвязные линейные списки
- •Линейный список
- •Операции над линейным списком
- •Реализация линейного списка в виде односвязной динамической структуры
- •Реализация основных операций над односвязным списком
- •Циклический список
- •Операции над циклическим списком
- •Односвязная реализация циклического списка
- •Реализация основных операций над односвязным циклическим списком
- •Реализация линейного списка в виде двусвязной динамической структуры
- •Реализация основных операций над двусвязным списком
- •Циклический двусвязный список
- •Реализация основных операций над двусвязным циклическим списком
- •Лабораторная работа 2. Односвязные и двусвязные линейные списки
- •Тема 3. Бинарные деревья
- •Основные понятия и определения
- •Построение бинарного дерева
- •Операции над бинарным деревом
- •Реализация бинарного дерева
- •Реализация основных операций над бинарным деревом
- •Дерево выражения
- •Дерево поиска
- •Операции над деревом поиска
- •Реализация дерева поиска
- •Реализация операций над деревом поиска
- •Сбалансированные деревья
- •Включение в сбалансированное дерево
- •Лабораторная работа 3. Бинарные деревья
- •Тема 4. Графы
- •Основные понятия и определения
- •Граф g7
- •Операции над графом
- •Реализация графа
- •Реализация основных операций над ориентированным графом
- •Обход ориентированного графа
- •Вычисление расстояния между узлами ориентированного графа
- •Лабораторная работа 4. Ориентированные графы
- •Библиографический список
Тема 4. Графы
-
Основные понятия и определения
Граф состоит из множества узлов и множества дуг. Каждая дуга в графе указывается парой узлов. Примеры графов:
Граф G1 Граф G2
Для графа G1 множество узлов – {A, B, C, D, E, F, G, H}, множество дуг – {(A, B), (A, D), (A, C), (C, D), (C, F), (E, G), (A, A)}. Дуга, соединяющая узел с самим собой, называется петлей. Узел может не иметь связанных с ним дуг (узел H графа G2). Если пары узлов, образующих дугу, упорядочены, то граф называют ориентированным, или направленным, графом (граф G2 – ориентированный); дуги в этом случае изображают стрелками. В этой теме мы будем рассматривать только ориентированные графы без петель.
Узел n называется инцидентным дуге x, если n – это один из двух узлов упорядоченной пары, составляющей дугу x (говорят также, что дуга x инцидентна узлу n). Степень узла – это число дуг, инцидентных узлу. Полустепень захода узла – это число дуг, входящих в узел, а полустепень исхода узла – это число дуг, выходящих из узла. Например, узел C графа G2 имеет полустепень захода 2, полустепень исхода 1 и степень 3. Узел n называется смежным с узлом m, если существует дуга из m в n.
Часть графа – это граф, содержащий часть узлов исходного графа и часть (любую) его дуг.
Подграфом графа называется такая его часть, которая вместе со всякой парой узлов содержит и дугу, если она есть в исходном графе.
Суграф содержит все узлы исходного графа и часть его дуг.
Граф Часть графа Подграф Суграф
G3 G4 G5 G6
Граф называется полным, если любые два его различных узла соединены дугой. Например, графы G3 и G5 полные.
Дополнением графа называется граф с тем же множеством узлов, что и исходный граф, причем два различны узла в дополнении графа смежны тогда и только тогда, когда они не смежны в исходном графе.
С каждой дугой графа может быть связано некоторое значение, как в графе G2. Такой граф называется взвешенным графом, а связанное с каждой дугой значение называется весом.
Путь от узла a до узла b – это последовательность узлов n0, n1, ..., nk, такая, что n0=a, nk=b и для любого i от 0 до k-1 узел ni+1 смежен узлу ni, т.е. существует дуга из ni в ni+1. Длина пути n0, n1, ..., nk равна количеству его дуг, то есть k. Например, в графе G7 путь A, B, C, D имеет длину 3 и соединяет узлы A и D.
Граф g7
Длина пути во взвешенном графе равна сумме весов дуг, входящих в этот путь.
Путь, не содержащий одинаковых узлов (за исключением, может быть, n0=nk), называется простым.
Путь от узла к самому себе, не содержащий одинаковых дуг, называется циклом. Если граф содержит цикл, то он называется циклическим, в противном случае – ациклическим.
Расстояние между двумя узлами – это длина кратчайшего пути, соединяющего эти узлы.
Граф называется связным, если для любой пары узлов существует соединяющий их путь. Например, граф G3 связный, а графы G4 – G6 – нет. Очевидно, что ориентированный граф не будет связным, если в нем есть узлы, не имеющие входящих или исходящих дуг. Неориентированный граф несвязный, если он содержит узлы, не имеющие инцидентных с ним дуг.
Связный ориентированный граф без петель называется сетью.