Базы данных. Лекция 4. Структуры данных

Download Report

Transcript Базы данных. Лекция 4. Структуры данных

БАЗЫ ДАННЫХ
СТРУКТУРЫ
ДАННЫХ
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