Мегаобучалка Главная | О нас | Обратная связь


Последовательное распределение памяти



2015-12-06 1018 Обсуждений (0)
Последовательное распределение памяти 0.00 из 5.00 0 оценок




Последовательное распределение – простой и естественный способ хранения линейного списка. В этом случае узлы списка размещаются в последовательных элементах памяти (рис.8.1).

Рис.8.1. Пример последовательного распределения памяти

для представления линейного списка

При последовательном распределении вектор данных логически отделен от описания структуры хранимых данных. Например, если структура данных представляет собой линейный список (файл записей фиксированной длины), то описание структуры хранится в отдельной записи и содержит:

а) N – размер вектора данных, т.е. количество элементов списка записей;

б) m – размер элемента списка, т.е. размер записи, например, в байтах;

в) b – адрес базы, указывающий на начало вектора данных в памяти.

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

a(i)=b+(i-1)m.

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

В качестве примера рассмотрим реализацию с помощью линейного списка при последовательном распределении памяти для логической структуры типа регулярного двоичного дерева (рис.8.2). Идея способа заключается в том, что начиная с элемента памяти a(1), делают его корнем дерева, размещают там данные, соответствующие узлу У1. В элементах памяти a(2) и a(3) размещают непосредственных потомков узла У1 – узлы У2 и У3, и т.д. В общем случае, непосредственные потомки узла Уk размещаются по адресам: a(2k) и a(2k+1). Адресная функция имеет вид

a(k)=b+(k-1)m,

где k – номер узла древовидной структуры; b – базовый адрес; m – размер элемента памяти, который требуется для хранения данных узлов дерева (каждый узел представляет собой запись фиксированной длины). По дереву, которое при этом получается, можно двигаться в обоих направлениях, так как от узла Уk можно перейти к его потомкам, удвоив k (или удвоив k и прибавив единицу). Можно двигаться к узлу, являющемуся исходным для узла Уk, разделив k пополам и отбросив дробную часть. Адрес соответствующего узлу элемента памяти определяется по адресной функции.

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

где ë û – знак округления до ближайшего меньшего целого.

Рис.8.2. Пример реализации структуры типа регулярного

двоичного дерева с помощью линейного списка

Корень дерева размещается в середину вектора. В элементах памяти от i-го до (m-1)-го включительно размещается левое поддерево. В элементах памяти от (m+1)-го до j-го включительно размещается правое поддерево. Аналогично процесс повторяется для размещения каждого поддерева. Приведенный способ позволяет реализовать двоичное сбалансированное дерево.

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



2015-12-06 1018 Обсуждений (0)
Последовательное распределение памяти 0.00 из 5.00 0 оценок









Обсуждение в статье: Последовательное распределение памяти

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1018)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)