БАЗЫ ДАННЫХ СТРУКТУРЫ ДАННЫХ 1 МОДЕЛИ СТРУКТУР ДАННЫХ Линейная структура (списки и кольца) Иерархическая структура (деревья) Сетевая структура Табличная структура (реляционная) 2 ЛИНЕЙНЫЕ СТРУКТУРЫ ДАННЫХ Список (очередь, цепь) Стек Дек Кольцо 3 СПИСКИ, ОЧЕРЕДИ И ЦЕПИ ОПРЕДЕЛЕНИЕ Иванов Пётр 2 Петров Иван 3 Сидоров Сидор … k Ньютон Исаак … N Буш Джорж ПОЛЯ ЗАПИСЕЙ СПИСКА ЗАПИСИ или ЭЛЕМЕНТЫ или УЗЛЫ списка 1 Линейный список – это множество, состоящее из N≥0 узлов (записей, элементов, членов) X1, X2,… Xk,…XN, структурные свойства которого ограниченны линейным (одномерным) относительным положением узлов, т.е. если 1<k<N, то X1 является первым узлом, k-му узлу Xk предшествует Xk-1 и за ним следует Xk+1; XN является последним узлом. 4 ОПЕРАЦИИ С ЛИНЕЙНЫМИ СПИСКАМИ Получить доступ к k-му узлу списка, что бы проанализировать и/или изменить его содержимое. Включить новый узел непосредственно перед k-м узлом. Исключить k-й узел. Объединить два линейных списка в один список (в Особо выделяются специальные случаи: k=1 и– случае необходимости объединить N списков объединяем попарно). k=N, поскольку в линейном списке легче получить доступ Разбить линейный на дваэлементам, (или более). к первому и список последнему чем к произвольному Сделать копию элементу. линейного списка. Определить количество элементов в списке. Выполнить сортировку элементов списка (в возрастающем или убывающем порядке) по некоторым полям в элементах. Найти в списке элемент с заданным значением в 5 некотором поле. ДОБАВЛЕНИЕ ЭЛЕМЕНТА В СПИСОК И УДАЛЕНИЕ ЭЛЕМЕНТА ИЗ СПИСКА НАЧАЛО ВТОРОЙ ТРЕТИЙ КОНЕЦ 2½ ВКЛЮЧИТЬ НАЧАЛО ВТОРОЙ ТРЕТИЙ ЧЕТВЁРТЫЙ КОНЕЦ ИСКЛЮЧИТЬ 6 УПОРЯДОЧИВАНИЕ И СОРТИРОВКА 1 A 1 A 2 D 2 D 3 W 4 F 4 F 5 Q 5 Q 3 W 7 ПЕРЕСЕКАЮЩИЕСЯ ЦЕПИ ЗАГОЛОВОК ЦЕПИ 1 Как удалить запись 3? ЗАГОЛОВОК ЦЕПИ 2 2 3 4 5 8 ПЕРЕСЕКАЮЩИЕСЯ ЦЕПИ С ДВУНАПРАВЛЕННЫМИ УКАЗАТЕЛЯМИ ЗАГОЛОВОК ЦЕПИ 1 ЗАГОЛОВОК ЦЕПИ 2 2 3 4 5 9 ОЧЕРЕДЬ ИСКЛЮЧИТЬ НАЧАЛО ВТОРОЙ ТРЕТИЙ Очередь – линейный список, в КОНЕЦ ВКЛЮЧИТЬ котором все включения производятся на одном конце списка, а все исключения (и обычно всякий доступ) делаются на другом конце списка. 10 СТЕК И МАГАЗИН ВКЛЮЧИТЬ ИЛИ ИСКЛЮЧИТЬ НАЧАЛО (ВЕРХ) ВТОРОЙ Стек – линейный список, в котором СВЕРХУ все включения и исключения (и ТРЕТИЙ обычно всякий доступ) делаются в СВЕРХУ одном конце списка. ЧЕТВЁРТЫЙ СВЕРХУ КОНЕЦ (НИЗ) 11 СТЕК 1 2 3 … Указатель на вершину стека N IP … 0 … 1 … 2 PUSH (A) A PUSH (B) A B PUSH (C) A B C … 3 IPOP A B C … 2 PUSH (D) A B D … 3 IPOP A B D … 2 IPOP A B D … 1 IPOP A B D … 0 D C PUSH (X) X B D … 1 B Y PUSH (Y) X Y D … 2 A X 12 ДЕК Включить или исключить ЛЕВЫЙ КОНЕЦ ВТОРОЙ СЛЕВА ВТОРОЙ СПРАВА ПРАВЫЙ КОНЕЦ Включить или исключить Дек – линейный список, в котором все включения и исключения (и обычно всякий доступ) делаются на обоих концах списка. 13 КОЛЬЦЕВЫЕ СТРУКТУРЫ ВКЛЮЧИТЬ ИСКЛЮЧИТЬ 14 КОЛЬЦЕВЫЕ СТРУКТУРЫ Заголовок кольца Кольцо с однонаправленными указателями. Что произойдет если некоторая запись разрушится? 15 КОЛЬЦЕВЫЕ СТРУКТУРЫ Заголовок кольца Кольцо с указателями на заголовок. При входе в кольцо не через его начало можно быстро получить информацию из заголовка. Что произойдет если некоторая запись 16 разрушится? КОЛЬЦЕВЫЕ СТРУКТУРЫ КОЛЬЦО С ДВУНАПРАВЛЕННЫМИ УКАЗАТЕЛЯМИ Заголовок кольца Если какая-нибудь запись цепи будет разрушена, все остальные записи останутся доступными. Если будет испорчен один указатель – его можно восстановить. 17 КОЛЬЦЕВЫЕ СТРУКТУРЫ «КОРАЛЛОВОЕ» КОЛЬЦО Заголовок кольца 1 7 2 6 3 5 4 Если разрушена запись с четным номером любая другая запись может быть найдена. Если потеряна запись с нечетным номером (за исключением 1) то некоторые записи могут стать недоступными. 18 ИЕРАРХИИ ИЛИ ДЕРЕВЬЯ КОРЕНЬ Уровень 1 Уровень 2 УЗЕЛ (степени 2) A Уровень 4 насчитывает 8 элементов B C ЛИСТ Уровень 3 D Уровень 4 I F E J K L O G M Порождённый элемент H N P 19 ИЕРАРХИИ ИЛИ ДЕРЕВЬЯ Семейство размерности 3 Диаграмма максимального пути Диаграмма пути (глубина 3) A B C D I F E J K L O G M H N P 20 ДЕРЕВЬЯ Дерево может быть определено как иерархия узлов с попарными связями, в которой: 1. Самый верхний уровень иерархии имеет один узел, называемый корнем. 2. Все узлы, кроме корня, связываются с одним и только одним узлом на более высоком уровне по сравнению с ним самим. Рекурсивное определение дерева (Д.Кнут): Конечное множество T, состоящее из одного и более узлов, таких, что 1. Имеется один, специально обозначенный узел, называемый корнем данного дерева, 2. Остальные узлы (кроме корня) содержатся в m≥0 попарно не пересекающихся множествах T1,…,Tm, каждое из которых в свою очередь является деревом. Деревья T1,…,Tm называются поддеревьями данного корня. 21 РЕКУРСИЯ Объект называется рекурсивным, если он содержит сам себя или определен с помощью самого себя. Если процедура р содержит явное обращение к самой себе, то она называется явно рекурсивной. Если процедура р содержит обращение к некоторой процедуре q, которая в свою очередь содержит прямое или косвенное обращение к р, то р называется косвенно рекурсивной. Рекурсивная программа не может вызывать себя бесконечно, иначе она никогда не остановится, таким образом в программе (функции) должна присутствовать еще один важный элемент так называемое терминальное условие, то есть условие при котором программа прекращает рекурсивный процесс. 22 РЕКУРСИЯ 23 СПОСОБЫ ПРЕДСТАВЛЕНИЯ ДРЕВОВИДНЫХ СТРУКТУР A B D I E J K M J I F O G M N L P O F E D G K L C N B H C A H P (A(B(D(I),E(J,K,L)),C(F,(O),G(M,N),H(P)))) 25 ОБХОД ДЕРЕВА ПРЯМОЙ ПОРЯДОК A B C D I F E J K L O G M H N P 26 ОРГАНИЗАЦИЯ БИНАРНОГО ДЕРЕВА КАК СТРУКТУРЫ ДАННЫХ A B D C E F G H J 28 ОРГАНИЗАЦИЯ БИНАРНОГО ДЕРЕВА A B D C E F G H J 29 ПЕТЛИ В ДЕРЕВЬЯХ A B D C E F G H J 30 СТЕК И ДЕРЕВЬЯ A C B D I F E J K L O H G M N P M O N K P JLI D H G E F C B A 31 СЕТЕВАЯ СТРУКТУРА ДАННЫХ 32