- •Введение
- •1 Основные понятия о типах и структурах данных
- •2 Простейшие статические структуры
- •2.1 Характерные свойства статических структур
- •2.2 Векторы
- •2.3 Массивы
- •2.4 Записи
- •2.5 Таблицы
- •2.6 Характерные свойства статических структур
- •3 Полустатические структуры
- •3.1 Общее понятие списковой структуры
- •3.2 Стеки
- •3.3 Очереди
- •3.4 Деки
- •4 Линейные динамические структуры
- •4.1 Характерные черты динамических структур
- •4.2 Односвязные списки
- •4.3 Двусвязные списки
- •4.4 Организация и представление линейных связных списков в памяти эвм
- •4.5 Представление стеков, очередей и деков линейными списками
- •5 Нелинейные связные структуры
- •5.1 Обобщенные двусвязные списки
- •5.2 Многосвязные списки
- •5.3 Сетевые структуры
- •5.4 Деревья
- •5.5 Бинарные деревья
- •6 Строковые данные
- •6.1 Строки
- •6.2 Векторное представление строк
- •6.3 Списковое представление строк
- •7 Файлы
- •7.1 Организация файлов на устройствах внешней памяти
- •7.2 Основные типы файлов
- •7.3 Последовательные файлы
- •7.4 Библиотечные файлы
- •7.5 Файлы прямого доступа
- •7.6 Индексно-последовательные файлы
- •8 Системы управления базами данных
- •8.1 Сущность базы данных и системы управления базами данных
- •8.2 Классификация банков данных и их составных частей
- •8.3 Иерархическая и сетевая модели баз данных
- •8.4 Реляционная модель базы данных
- •9 Задачи и упражнения
- •9.1. Векторы
- •9.2 Матрицы
- •9.3 Строки
- •9.4 Записи и таблицы
- •9.5 Списки
- •9.6 Очереди, стеки, деки
- •9.7 Двоичные деревья
- •Библиографический список
- •Содержание
- •Структуры данных
- •650049, Красноярск, пр.Мира 82.
2.4 Записи
Запись - конечное упорядоченное множество элементов, характеризующихся в общем случае различным типом данных. Часто элементы записи называются также полями. Запись - такое обобщение понятия вектора (или одномерного массива), при котором не требуется однотипность, или однородность, элементов.
Доступ к любому элементу записи осуществляется с помощью имени, которое должно задаваться для каждого элемента на этапе описания логической структуры записи.
Дескриптор записи может содержать имя записи, число входящих в нее элементов, имена и типы элементов, длины соответствующих им полей, а также указатели значений элементов. Поскольку обращение к элементам записи осуществляется по их именам, отпадает необходимость в смежном расположении элементов записи в памяти. Рис.2.3 иллюстрирует дескриптор записи STUDENT. Первая строка дескриптора содержит признак REC записи, идентификатор и число элементов, или полей, записи. В каждой из следующих строк дескриптора хранятся признак типа элемента, длина поля, отводимого в памяти для элемента (например, в байтах), имя поля и указатель значения элемента. Для сокращения объема памяти, отводимой для записи, значения некоторых ее элементов могут храниться в самом дескрипторе на месте указателей, в этом случае в дескрипторе требуются соответствующие признаки для индикации этого факта.
REC |
STUDENT |
7 |
|
| |
I |
2 |
NUM |
· |
ü |
|
S |
15 |
NANE |
· |
ê |
Указатели значений элементов
|
S |
3 |
FAC |
· |
ê | |
S |
5 |
GROUP |
· |
ý | |
I |
1 |
MATH |
· |
ê | |
I |
1 |
COMP |
· |
ê | |
I |
1 |
LANG |
· |
þ |
|
Рис. 2.3 - Дескриптор записи с именем STUDENT, содержащий 7 полей. (REC - признак дескриптора записи, S -признак строки символов, I признак целого числа)
Использовать отдельный указатель для каждого элемента записи излишне, если значения элементов занимают в памяти непрерывную область. В этом случае в дескрипторе достаточно иметь один указатель области значений элементов, а в описаниях элементов - смещение относительно начала области для формирования адреса значения элемента. Такой способ экономит память для хранения дескриптора, но в то же время требует более сложной процедуры доступа к элементам записи.
Сформулированное выше определение записи можно считать определением простой записи. Для простой записи характерно то, что каждый ее элемент является простым данным или цепочкой простых данных одного и того же типа. Если изобразить логическую структуру простой записи в виде дерева, то его корнем будет служить имя записи, а листьями - непосредственно элементы записи.
Общим видом записи является такая запись, в которой каждый ее элемент может быть, в свою очередь, записью более низкого уровня, причем каждый элемент записи более низкого уровня также может быть записью следующего уровня, и т.д. Такая иерархическая структура записи может содержать произвольное число уровней и поэтому ее можно назвать многоуровневой записью. Именно к этому типу записей относятся, в частности, структуры в языке ПЛ/1.
Независимо от числа уровней в структуре записи полезная информация содержится лишь в тех элементах, которые соответствуют листьям (висячим вершинам) дерева, представляющего запись. Остальные элементы записи, а также и имя записи используются для доступа к полезной информации записи.
Элементы записи с полезной информацией называются содержательными элементами. Как правило, операции над записью эквивалентны операциям над ее содержательными элементами. Доступ к содержательному элементу в логической структуре записи осуществляется обычно указанием последовательности идентификаторов, содержащей идентификатор записи и идентификаторы промежуточных элементов и соответствующего содержательного элемента. Эта последовательность однозначно определяет путь по дереву в логической записи, начиная от идентификатора записи в целом и кончая идентификатором требуемого содержательного элемента.
Дескриптор многоуровневой записи должен, кроме той информации, которая характерна для дескриптора простой записи, содержать также сведения об элементах промежуточных уровней и о числе элементов следующего, более низкого уровня, непосредственно подчиненных элементу промежуточного уровня. Поскольку полезная информация записи ассоциируется лишь с содержательными элементами, в дескрипторе многоуровневой поле указателя данных имеется только в тех строках таблицы дескриптора, которые соответствуют содержательным элементам.