Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Хранение массива в виде вектора




Пусть массив А[in, kn] хранится в памяти машины в виде одномерного вектора B[N], где

Элементы массива А можно отобразить в массив В двумя способами: строками, когда наиболее быстро меняется последний индекс; столбцами, когда наиболее быстро меняется первый индекс (строки и столбцы, естественно, имеют буквальный смысл только для двумерных массивов).

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

где при отображении строками

Dn = 1 и Dm = (km+1 - im+1 +1) Dm+1

m=n -1,...,1,

а при отображении столбцами

D1 = 1 и Dm = (km-1 - im-1 +1) Dm-1

m=2,...,n,

Формула определения адреса хранения элемента A[j1,.... jn] в случае, когда вектор В имеет базу b (адрес):

Постоянная величина с, как и коэффициенты Dm, зависит только от значений граничных пар в описании массива А.

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

При отображении строками это – коэффициенты:

с, D1,..., Dn-1

коэффициент Dn всегда равен единице.

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

В программе может быть несколько массивов. Для распределения памяти под массивы необходимо знать число элементов N в каждом массиве.

Величину N можно вычислить из формулы

Dm = (km+1 - im+1 +1) Dm+1

при m=0

N = D0 = (k1—i1+1) D1

где N – размерность массива, с, D0, D1,...,Dn-1 — коэффициенты, i1, k1.., in, kn – значения граничных пар, которые зависят только от описания массива, обычно хранятся в виде, так называемого, определяющего вектора массива. Для массивов с одинаковыми описаниями определяющие векторы равны.

Таким образом, для вычисления адреса элемента массива достаточно знать базу отображающего вектора b и место хранения определяющего вектора.

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

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

5. Деревьяи ориентированные графы удобнее всего отображать сетями (в виде мультисписков), а также, используя специальные формы записи, деревья можно хранить в виде векторов, что широко используется в трансляторах.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 474; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.