- •Понятие о структуре данного. Уровни представления структур данных.
- •Классификация сд в программах пользователя и в памяти эвм
- •Сд в оперативной памяти
- •Сд типа массив.
- •Сд типа запись (прямое декартово произведение).
- •Сд типа таблица.
- •Операции над таблицей:
- •Временная сложность алгоритмов.
- •Сд типа хеш-таблица.
- •Операция включения элемента в таблицу.
- •Операция исключения элемента из таблицы:
- •Сортировки. Улучшенные методы сортировок.
- •Классификация задач по временной сложности.
- •Сд типа стек.
- •Алгоритм сортировки Хоара (стек используется для хранения границ сортируемой области в таблице):
- •Сд типа очередь.
- •Связное распределение памяти.
- •Сд типа линейный односвязный список.
- •Сд типа указатель.
- •Статические и динамические переменные.
- •Сд типа циклический линейный список.
- •Сд типа двусвязный линейный список.
- •Сд типа дек.
- •Многосвязные списки.
- •Средства объектно-ориентированного программирования.
- •Объекты и свойства инкапсуляции.
- •Наследование и переопределение.
- •Полиморфизм. Виртуальные методы.
- •Динамические объекты. Деструкторы.
- •Обработка ошибок при работе с динамическими объектами.
- •Модули, экспортирующие объекты.
- •Нелинейные структуры данных.
- •Сд типа дерево.
- •Представление деревьев в связной памяти эвм.
- •Алгоритмы прохождения деревьев в глубину и в ширину.
- •Представление деревьев в виде бинарных.
- •Представление бинарных деревьев в связной памяти. Прошитые деревья
- •Формирование бинарного дерева.
- •Применение бинарных деревьев в алгоритмах поиска.
- •Операция включения в сд типа бинарное дерево.
- •Операция исключения из бинарного дерева.
- •Представление бинарного дерева в прямоугольной памяти.
- •Применение бинарных деревьев.
- •Сд типа граф.
- •Представление графа в памяти эвм.
- •Алгоритмы прохождения графа.
- •Топологическая сортировка.
- •Организация данных во внешней памяти. Типы и характеристики устройств внешней памяти.
- •Сд типа последовательный файл.
- •Сд типа файл прямого доступа.
- •Сд типа индексно-последовательный файл.
- •Сд типа хеш-файл.
- •Внешняя сортировка.
- •Алгоритм прямого слияния.
- •Многофазная сортировка.
- •Сущность базы данных. Системы управления базами данных.
- •Общая структура субд.
- •Реляционная модель субд.
- •Язык реляционной алгебры.
Сд типа последовательный файл.
Файл последовательного доступа используется для решения задач, использующих поочередное обращение к данным, когда нет требования.
Основные операции над СД типа последовательный файл:
инициализация;
обработка данных без их изменения;
модификация файла.
Инициализация файла:
присвоить файлу имя;
открытие нового файла (формируется буфер, и указатель принимает значение 0);
подготовка данных;
запись компоненты (указатель перемещается на 1);
закрытие файла (формируется маркер конца файла).
Обработка данных:
задание имени файла;
открыть сформированный файл (с помощью процедуры Reset);
прочитать данные, сделать обработку;
закрыть файл.
Модификация файла (добавление новых компонент, изменение существующих компонент):
присвоить имя;
открыть файл;
установить указатель на следующую после последней записи компоненту (использовать для этого процедуру Seek (<файловая переменная>, FileSize(<файловая переменная>)));
подготовка данных;
запись;
закрыть файл.
Сд типа файл прямого доступа.
Файл прямого доступа используется, если есть ограничение на время доступа к информации.
Основные операции над СД типа последовательный файл:
инициализация;
обработка данных;
модификация..
Инициализация – формирование множества фиктивных записей, включающих в себя поле, определяющее статус этой записи, и говорящее о присутствии или отсутствии компоненты. В самом простом случае ключ равен адресу записи.
Обработка данных:
присвоить файлу имя;
открыть сформированный файл;
запросить ключ;
установить указатель с использованием информации о нахождении ключа;
прочитать;
закрыть файл.
Модификация (изменение записи):
присвоить имя;
открыть сформированный файл, запросить ключ;
подвести указатель к нужной записи;
обработать компоненту;
опять подвести указатель к нужной компоненте;
записать;
закрыть файл.
В более сложном случае:
С помощью какого-либо алгоритма обработать ключ, вытекающий из какой-либо предметной области и вычислить адрес. Алгоритм определения места ключа в файле осуществляет отображение шифров на адреса. Это отображение 1:1. Сложность состоит в определении функции отображения Ф(к).
Пример: Имеем g=6, n=13, где g – номер класса (g=1, 2,…, 10), n – номер по списку в журнале (n=1, 2,…,25). K = 100g + n (n = k – 100g)
Ak = A0 + 25(g – 1) + n – 1 = A0 + 25g – 25 + n – 1 = A0 + 25g – 26 + k – 100g = A0 – 75g – 26 + k = A0 – 75[k/100] – 26 + k = Ф(k) – функция отображения.
Если функцию отображения Ф(k) найти не удается, то нужно провести индексирование. Функция Ф(k) строится с помощью таблицы.
ключ указатель
0
При первоначальной
загрузке файла прямого доступа
формируется таблица (справочник), в
которой имеется по одному элементу для
каждой записанной компоненты файла.
Каждый элемент таблицы включает ключ
и указатель (номер в файле). Элементы
справочника обычно упорядочиваются
по значению ключа.
15 20
. . . .
Когда добавляется новая запись, то она помещается в конец файла, для нее формируется элемент в справочнике и осуществляется включение элемента в упорядоченный справочник. При удалении элемента, все остальные элементы заполняют пустые места, полученные при удалении.
Использование справочника является единственной возможностью ускорения поиска в неупорядоченном файле. Последовательный перебор всех записей неупорядоченного файла заменяется быстрым поиском в упорядоченном справочнике. Размер таблицы меньше размера файла, следовательно таблицу удобнее сортировать. Таблица запоминается вместе с файлом. Отображение идет в отношении 1:1.
Следует заметить, что сложность можно понизить, если использовать динамический справочник, обрабатывая данные в динамической памяти:
ключ указатель