- •Оглавление
- •Введение
- •Раздел 1. Основные структуры данных
- •Тема 1. Введение в структуры данных. Динамическое распределение памяти
- •Классификация структур данных
- •1.2. Переменные-указатели и динамическое распределение памяти.
- •Например, указатели на простейшие базовые типы вводятся следующим образом:
- •Var pStr1,pStr2 :TpString; {переменные-указатели на строки}
- •1.3. Дополнительные вопросы использования переменных-указателей
- •1.4. Контрольные вопросы по теме
- •Тема 2. Структуры данных “стек” и “очередь”
- •2.1. Что такое стек и очередь?
- •2.2. Статическая реализация стека
- •2.3. Динамическая реализация стека
- •{Ссылочный тип для адресации элементов стека}
- •2.4. Статическая реализация очереди
- •2.5. Динамическая реализация очереди
- •{Ссылочный тип для адресации элементов очереди}
- •2.6. Практические задания
- •2.7. Контрольные вопросы по теме
- •Тема 3. Основы реализации списковых структур
- •3.1. Структуры данных типа “линейный список”
- •3.2. Первый способ статической реализации списка.
- •3.3. Второй способ статической реализации списка.
- •3.4. Управление памятью при статической реализации списков
- •3.5. Динамическая реализация линейных списков
- •3.6. Практические задания
- •3.7. Контрольные вопросы по теме
- •Тема 4. Усложненные списковые структуры
- •4.1. Двунаправленные линейные списки
- •4.2. Комбинированные структуры данных: массивы и списки указателей
- •4.3. Комбинированные структуры данных: массивы и списки списков
- •4.4. Практические задания.
- •4.5. Контрольные вопросы по теме
- •Тема 5. Основные понятия о древовидных структурах
- •5.1. Основные определения
- •5.2. Двоичные деревья
- •5.3. Идеально сбалансированные деревья
- •5.4. Практические здания
- •5.5. Контрольные вопросы по теме
- •Тема 6. Реализация поисковых деревьев
- •Двоичные деревья поиска.
- •6.2. Добавление вершины в дерево поиска
- •6.3. Удаление вершины из дерева поиска
- •6.4. Практические задания
- •Контрольные вопросы по теме
- •Тема 7. Дополнительные вопросы обработки деревьев. Графы.
- •Проблемы использования деревьев поиска
- •7.2. Двоичные деревья с дополнительными указателями
- •7.3. Деревья общего вида (не двоичные).
- •Представление графов
- •Практические задания
- •Контрольные вопросы по теме
- •Раздел 2. Алгоритмы сортировки и поиска
- •Тема 1. Классификация методов. Простейшие методы сортировки
- •1.1. Задача оценки и выбора алгоритмов
- •1.2. Классификация задач сортировки и поиска
- •1.3. Простейшие методы сортировки: метод обмена
- •1.4. Простейшие методы сортировки: метод вставок
- •1.5. Простейшие методы сортировки: метод выбора
- •1.6. Практическое задание
- •1.7. Контрольные вопросы по теме
- •Тема 2. Улучшенные методы сортировки массивов
- •2.1. Метод Шелла
- •2.2. Метод быстрой сортировки
- •2.3. Пирамидальная сортировка
- •2.4. Практическое задание
- •2.5. Контрольные вопросы по теме
- •Тема 3. Специальные методы сортировки
- •3.1. Простейшая карманная сортировка.
- •3.2. Карманная сортировка для случая повторяющихся ключей
- •3.3. Поразрядная сортировка
- •3.4. Практическое задание
- •3.5. Контрольные вопросы по теме
- •Тема 4. Поиск с использованием хеш-функций
- •4.1. Основные понятия
- •4.2. Разрешение конфликтов: открытое хеширование
- •4.3. Разрешение конфликтов: внутреннее хеширование
- •4.4. Практические задания
- •4.5. Контрольные вопросы по теме
- •Тема 5. Внешний поиск и внешняя сортировка
- •5.1. Особенности обработки больших наборов данных
- •5.2. Организация внешнего поиска с помощью б-деревьев.
- •5.4. Поиск элемента в б-дереве.
- •5.5. Добавление вершины в б-дерево
- •5.6. Удаление вершины из б-дерева
- •5.7. Внешняя сортировка
- •5.8. Практические задания
- •5.9. Контрольные вопросы по теме
- •Основные термины и понятия
- •Литература
Практические задания
Задание 1. Реализовать основные операции с недвоичными деревьями, представленными с помощью списка родителей и потомков. Будем считать, что начальное дерево содержит единственную корневую вершину. Необходимо реализовать следующие операции:
добавление новой вершины как потомка заданной вершины
удаление заданной вершины
вывод всех вершин с указанием родительских связей
поиск заданной вершины
Требования к подпрограммам и главной программе – стандартные.
Задание 2. Реализовать основные операции с простыми графами с использованием матричного и спискового представлений:
формирование матрицы смежности
преобразование матрицы смежности в список смежности
формирование списка смежности
преобразование списка смежности в матрицу смежности
добавление нового ребра
удаление заданного ребра
добавление новой вершины
удаление заданной вершины
обход графа в глубину
обход графа в ширину
Требования к подпрограммам и главной программе – стандартные.
Контрольные вопросы по теме
Какие проблемы возникают при использовании деревьев поиска?
Как влияет на структуру дерева поиска разный порядок поступления одних и тех же входных ключей?
Почему при построении дерева поиска важно управлять его структурой?
Какие деревья называются АВЛ-сбалансированными?
Как связаны понятия “идеально сбалансированное дерево” и “АВЛ-сбалансированное дерево”?
Приведите примеры идеально сбалансированного, АВЛ-сбалансированного и не-АВЛ-сбалансированного деревьев.
Какой параметр используется для реализации АВЛ-сбалансированных деревьев?
По какому алгоритму выполняется АВЛ-балансировка дерева при добавлении вершины?
Какие ситуации возможны при необходимости балансировки некоторого поддерева?
Как выполняется однократный поворот?
Как выполняется двукратный поворот?
Как выполняется балансировка дерева при удалении вершины?
Как описывается структура вершины дерева с дополнительными указателями на родителей?
Какие преимущества и недостатки имеют деревья с дополнительными указателями на родителей?
Для чего можно использовать деревья с дополнительными указателями на родителей?
В чем состоит основная сложность реализации не-двоичных деревьев?
Какие списковые структуры можно использовать для реализации не-двоичных деревьев?
Какую структуру должны иметь вершины не-двоичных деревьев при реализации их с помощью списков?
Как реализуется вывод вершин не-двоичного дерева, представленного с помощью списков?
Как реализуется добавление вершины в не-двоичное дерево, представленное с помощью списков?
Как реализуется удаление вершины из не-двоичного дерева, представленного с помощью списков?
Какие существуют разновидности графов?
Какие способы можно использовать для представления графов как структур данных?
Что такое матрица смежности и как она описывается?
Какие структуры данных необходимы для реализации списков смежности?
Какие основные задачи возникают при использовании графов?
Как реализуются операции добавления и удаления ребер в графе?
Как реализуются операции добавления и удаления вершин в графе?
Какие шаги включает в себя алгоритм поиска в глубину?
Какие шаги включает в себя алгоритм поиска в ширину?