
- •Лекция 1 Основные понятия
- •Информационная база
- •Р ис. 1. Уровни представления данных
- •Программные средства (субд)
- •Структуры данных
- •Линейные структуры
- •Нелинейные структуры
- •Сетевые структуры
- •Р ис. 6. Пример простой сетевой структуры
- •Часть 2. Реляционная модель данных
- •Основные понятия реляционной модели данных
- •Литература
Нелинейные структуры
В качестве примеров нелинейных структур рассмотрим
списки;
деревья;
сети.
Порядок следования (и, соответственно, выборки) элементов таких структур может не соответствовать порядку расположения элементов в памяти.
Списки представляют собой пример линейного упорядочения, деревья - двумерного, сети - произвольного.
Соответственно различаются методы и средства, обеспечивающие последовательность выборки элементов данных. Обычно для обеспечения возможности прямого доступа к произвольному элементу необходимо использовать вспомогательные структуры типа инвертированных списков.
Списки. Как и массив, список представляет собой совокупность однотипных элементов. Однако порядок выборки элементов может отличаться от порядка следования в памяти, определенного при размещении.
Наиболее очевидный способ установления однонаправленного порядка выборки элементов - это сопоставить каждому элементу списка ссылку, указывающую на следующий элемент.
Соответственно, для организации двунаправленного списка, допускающего также выборку в обратном порядке, каждый элемент должен иметь ссылку на предыдущий. Такая организация уже не допускает возможности прямого доступа, например, по номеру элемента.
Кроме того, число элементов списка, как и в случае последовательностей, может быть неизвестно до размещения, и до начала обработки (и, соответственно, размещения) необходимо считать длину списка бесконечной, что ведет к необходимости предусматривать специальную процедуру выделения/освобождения памяти.
Таким образом, с точки зрения физической реализации элемент списка должен быть составным, включающим собственно информативные данные, несущие смысловое значение, и дополнительные данные (ссылки), определяющие порядок доступа к информативным элементам.
Понятие списка достаточно универсально. В общем случае ссылки могут указывать ответвления к другим спискам - подспискам. В зависимости от способа построения списка и предполагаемых путей доступа к элементам различают следующие виды ссылок: перекрестные, боковые, иерархические, множественные, что позволяет изменять «естественный» последовательный порядок прохода по элементам списка.
Д
еревья.
Дерево (рис. 3) представляет собой иерархию
элементов, называемых узлами.
На самом верхнем уровне иерархии имеется
только один узел - корень.
Рис. 3. Пример структуры типа дерево
Каждый узел, кроме корня, связан с одним узлом на более высоком уровне, называемым исходным узлом для данного узла. Каждый элемент имеет только один исходный. Каждый элемент может быть связан с одним или несколькими элементами на более низком уровне, которые называются порожденными. Элементы, расположенные в конце ветви, т. е. не имеющие порожденных, называются листьями.
На практике существуют различные способы представления структур деревьев.
Сетевые структуры
Иерархические структуры характерны для многих областей, однако во многих случаях отдельная запись требует более одного представления или связана с несколькими другими.
В результате получаются обычно более сложные структуры по сравнению с древовидными. Например, генеалогическое дерево может быть представлено в виде древовидной структуры, только если для каждого элемента (личности) будет показан только один исходный элемент (родитель). Если бы были показаны оба родителя, то это была бы более сложная структура.
В
сетевой структуре любой элемент может
быть связан с любым другим элементом.
Примеры сетевых структур приведены на
рис. 5.
Рис. 5. Примеры сетевых структур
Так же, как и в случае древовидных структур, сетевую структуру можно описать с помощью исходных и порожденных элементов.
Удобно представлять ее так, чтобы порожденные элементы располагались ниже исходных. При рассмотрении некоторых сетевых структур естественно говорить об уровнях, так же как и в случае древовидных структур.
Во многих сетевых структурах, задающих связи между элементами, представление отношений между исходными и порожденными элементами аналогично представлению отношений в случае дерева: отношение исходный - порожденный является сложным (указывается сдвоенными стрелками), а отношение порожденный - исходный - простым (указывается одинарными стрелками).
Пример приведен на рисунке 6.