[Оглавление] | [<< страница] | [>>страница] |
Вектор является наиболее простой структурой хранения многоэлементных структур данных. Вектор размещается в одной сплошной области памяти. Элементы структуры данных в векторе физически размещаются последовательно один за другим. Поэтому в элементе структуры данных имеется только элемент данных и отсутствует элемент отношений, показывающий связи элемента структуры данных с другими элементами.
Такая структура хранения наиболее близко соответствует реальной организации памяти большинства ЭВМ. Все элементы структуры данных имеют одинаковую длину. Доступ к отдельному элементу осуществляется с использованием базового адреса (адреса начала) вектора и номера этого элемента. Обычно в векторной памяти размещаются массивы (одномерные и многомерные), строки, стеки, очереди, таблицы и т.п.
Для манипулирования со структурой данных, хранимой в векторе, требуется управляющая информация, определяющая адрес начала вектора, тип элементов структуры данных и их количество в векторе и т.п. Для хранения управляющей информации создается дескриптор (описатель) вектора, или информационный вектор.
Таким образом, структура вектора состоит из двух частей: дескриптора и непосредственно вектора, в котором последовательно размещаются элементы структуры данных.
дескриптор вектора
Адрес начала вектора |
Длина элемента |
Индекс начального эл-та |
Индекс конечного эл-та |
Дескриптор содержит: адрес начала вектора, тип элементов структуры данных или их длину, число элементов или их начальный и конечный индексы. Адрес элемента с индексом i определяется выражением Аi= Am+(i - m) *L,
В большинстве случаев отображение структур данных в структуры хранения в виде вектора можно выполнить, используя такой тип данных, как «массив». При этом транслятор создает как дескриптор вектора, так и сам вектор, а обращение к элементам вектора сводится к обращению к элементам массива. Однако трансля-тор создает статический массив с фиксированными размерами, что может явиться ограничивающим фактором его применения. В прикладной программе можно организовать хранение данных в динамическом векторе. Для этого нужно выполнить ряд операций: определить структуру дескриптора, получить динамическую память под дескриптор и заполнить дескриптор управляющей информацией. Используя данные из дескриптора, определить размер памяти для вектора и получить динамическую память. При необходимости инициализировать лементы структуры данных в векторе. Адреса элементов для доступа к ним вычисляются с использованием управляющей информации из дескриптора. В программе доступ к структуре данных, хранимой в виде вектора, осуществляется посредством указателя на дескриптор.
Указатель на дескриптор —» Дескриптор —>Вектор
Иногда вместо дескриптора используется только указатель на начало вектора. Тогда остальные параметры структуры данных (тип или длина элементов, число элементов и т.п.) должны быть известны каждой из процедур обработки структуры данных, что может усложнить их реализацию.
Приведем пример программы организации хранения структуры данных в векторной памяти и обработки ее элементов.
Элементами структуры данных являются вещественные числа, обработка элемента сводится сначала к занесению в элемент некоторого значения, а затем к выводу его значения на печать. Доступ к элементам структуры данных осуществляется по их индексам, значения которых меняются от m до п.
[Оглавление] | [<<страница] | [>>страница] | [В начало ] |