Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
структуры и алгоритмы / Лекции_лабор_структ.doc
Скачиваний:
56
Добавлен:
04.06.2015
Размер:
2.98 Mб
Скачать

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.

Независимо от числа уровней в структуре записи полезная информация содержится лишь в тех элементах, которые соответствуют листьям (висячим вершинам) дерева, представляющего запись. Остальные элементы записи, а также и имя записи используются для доступа к полезной информации записи.

Элементы записи с полезной информацией называются содержательными элементами. Как правило, операции над записью эквивалентны операциям над ее содержательными элементами. Доступ к содержательному элементу в логической структуре записи осуществляется обычно указанием последовательности идентификаторов, содержащей идентификатор записи и идентификаторы промежуточных элементов и соответствующего содержательного элемента. Эта последовательность однозначно определяет путь по дереву в логической записи, начиная от идентификатора записи в целом и кончая идентификатором требуемого содержательного элемента.

Дескриптор многоуровневой записи должен, кроме той информации, которая характерна для дескриптора простой записи, содержать также сведения об элементах промежуточных уровней и о числе элементов следующего, более низкого уровня, непосредственно подчиненных элементу промежуточного уровня. Поскольку полезная информация записи ассоциируется лишь с содержательными элементами, в дескрипторе многоуровневой поле указателя данных имеется только в тех строках таблицы дескриптора, которые соответствуют содержательным элементам.

Соседние файлы в папке структуры и алгоритмы