рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Операций

Операций - раздел Образование, Полустатические структуры данных При Представлении Очереди Вектором В Статической Памяти В Дополнение...

При представлении очереди вектором в статической памяти в

дополнение к обычным для дескриптора вектора параметрам в нем

должны находиться два указателя: на начало очереди (на первый

элемент в очереди) и на ее конец (первый свободный элемент в оче-

реди). При включении элемента в очередь элемент записывается по

адресу, определяемому указателем на конец, после чего этот указа-

тель увеличивается на единицу. При исключении элемента из очереди

выбирается элемент, адресуемый указателем на начало, после чего

этот указатель уменьшается на единицу.

Очевидно, что со временем указатель на конец при очередном

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

которая выделена для очереди. Однако, если операции включения че-

редовались с операциями исключения элементов, то в начальной час-

ти отведенной под очередь памяти имеется свободное место. Для то-

го, чтобы места, занимаемые исключенными элементами, могли быть

повторно использованы, очередь замыкается в кольцо: указатели (на

начало и на конец), достигнув конца выделенной области памяти,

переключаются на ее начало. Такая организация очереди в памяти

называется кольцевой очередью. Возможны, конечно, и другие вари-

анты организации: например, всякий раз, когда указатель конца

достигнет верхней границы памяти, сдвигать все непустые элементы

очереди к началу области памяти, но как этот, так и другие вари-

анты требуют перемещения в памяти элементов очереди и менее эф-

фективны, чем кольцевая очередь.

В исходном состоянии указатели на начало и на конец указыва-

ют на начало области памяти. Равенство этих двух указателей (при

любом их значении) является признаком пустой очереди. Если в про-

цессе работы с кольцевой очередью число операций включения превы-

шает число операций исключения, то может возникнуть ситуация, в

которой указатель конца "догонит" указатель начала. Это ситуация

заполненной очереди, но если в этой ситуации указатели сравняют-

ся, эта ситуация будет неотличима от ситуации пустой очереди. Для

различения этих двух ситуаций к кольцевой очереди предъявляется

требование, чтобы между указателем конца и указателем начала ос-

тавался "зазор" из свободных элементов. Когда этот "зазор" сокра-

щается до одного элемента, очередь считается заполненной и даль-

нейшие попытки записи в нее блокируются. Очистка очереди сводится

к записи одного и того же (не обязательно начального) значения в

оба указателя. Определение размера состоит в вычислении разности

указателей с учетом кольцевой природы очереди.

Программный пример 4.3 иллюстрирует организацию очереди и

операции на ней.

{==== Программный пример 4.3 ====}

unit Queue; { Очередь FIFO - кольцевая }

Interface

const SIZE=...; { предельный размер очереди }

type data = ...; { эл-ты могут иметь любой тип }

Procesure QInit;

Procedure Qclr;

Function QWrite(a: data) : boolean;

Function QRead(var a: data) : boolean;

Function Qsize : integer;

Implementation { Очередь на кольце }

var QueueA : array[1..SIZE] of data; { данные очереди }

top, bottom : integer; { начало и конец }

Procedure QInit; {** инициализация - начало=конец=1 }

begin top:=1; bottom:=1; end;

Procedure Qclr; {**очистка - начало=конец }

begin top:=bottom; end;

Function QWrite(a : data) : boolean; {** запись в конец }

begin

if bottom mod SIZE+1=top then { очередь полна } QWrite:=false

else begin

{ запись, модификация указ.конца с переходом по кольцу }

Queue[bottom]:=a; bottom:=bottom mod SIZE+1; QWrite:=true;

end; end; { QWrite }

Function QRead(var a: data) : boolean; {** выборка из начала }

begin

if top=bottom then QRead:=false else

{ запись, модификация указ.начала с переходом по кольцу }

begin a:=Queue[top]; top:=top mod SIZE + 1; QRead:=true;

end; end; { QRead }

Function QSize : integer; {** определение размера }

begin

if top<=bottom then QSize:=bottom-top

else QSize:=bottom+SIZE-top;

end; { QSize }

END.

– Конец работы –

Эта тема принадлежит разделу:

Полустатические структуры данных

Полустатические структуры данных Характерные особенности полустатических... Стеки Логическая... Очереди FIFO Логическая структура...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Операций

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Характерные особенности полустатических структур
Полустатические структуры данных характеризуются следующими признаками: - они имеют переменную длину и простые процедуры ее изменения; - изменение длины структуры происхо

Логическая структура стека
Стек - такой последовательный список с переменной длиной, включение и исключение элементов из которого выполняются только с одной стороны списка, называемого вершиной стека. Приме

Машинное представление стека и реализация операций
При представлении стека в статической памяти для стека выде- ляется память, как для вектора. В дескрипторе этого вектора кроме обычных для вектора параметров должен находиться так

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

Логическая структура очереди
Очередью FIFO (First - In - First- Out - "первым пришел - первым исключается"). называется такой последовательный список с переменной длиной, в котором включение элемент

Очереди с приоритетами
В реальных задачах иногда возникает необходимость в форми- ровании очередей, отличных от FIFO или LIFO. Порядок выборки элементов из таких очередей определяется приоритетами элеме

Очереди в вычислительных системах
Идеальным примером кольцевой очереди в вычислительной систе- мы является буфер клавиатуры в Базовой Системе Ввода-Вывода ПЭВМ IBM PC. Буфер клавиатуры занимает последовательность

Логическая структура дека
Дек - особый вид очереди. Дек (от англ. deq - double ended queue,т.е очередь с двумя концами) - это такой последовательный список, в котором как включение, так и исключение элемен

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

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

Представление строк в памяти.
Представление строк в памяти зависит от того, насколько из- менчивыми являются строки в каждой конкретной задаче, и средства такого представления варьируются от абсолютно статичес

ПРЕДСТАВЛЕНИЕ СТРОК ВЕКТОРОМ ПЕРЕМЕННОЙ ДЛИНЫ С ПРИЗНАКОМ
КОНЦА. Этот и все последующие за ним методы учитывают переменную длину строк. Признак конца - это особый символ, принадлежащий ал- фавиту (таким образом, полезный

ПРЕДСТАВЛЕНИЕ СТРОК ВЕКТОРОМ ПЕРЕМЕННОЙ ДЛИНЫ СО СЧЕТЧИКОМ.
Счетчик символов - это целое число, и для него отводится доста- точное количество битов, чтобы их с избытком хватало для предс- тавления длины самой длинной строки,какую только мо

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги