русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Очередь


Дата добавления: 2015-01-16; просмотров: 614; Нарушение авторских прав


Очередью называют одномерную структуру данных с дисци­плиной обслуживания "первый пришел – первый ушел". Такую дисциплину обслу­живания также называют FIFO (First In – First Out), что озна­чает то же самое. Все включения в очередь делаются на одном конце, а все исключения – на другом. Очередь может быть пред­став­лена массивом или списком. В этом разделе рассматривается представление очереди массивом (рис 1).

Рис 2. Очередь в массиве

 

Простейшее решение состоит в том, чтобы иметь два указателя для начала и конца очереди - F и R. F указывает место на начало очереди; R указывает на последний элемент очереди.

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

/* Поместить в очередь */ R=R+1; X[R]=Y;

/* Взять из очереди */ F=F+1; Y=X[F];

Заметим, что в процессе выполнения серии включений и исключений, очередь будет ”ползти” вдоль памяти, так как F и R непрерывно увеличиваются. Это означает чрезвычайно расточительное использование памяти. Проблему можно решить, отводя под очередь M позиций и неявно замыкая её в кольцо, так, что за последней позицией следует первая. Пусть очередь представлена структурой:

#define M 8 // длина массива, отводимого под очередь

struct QUEUE{

int Q[M]; // массив, используемый для хранения очереди

int F; // ИНДЕКС первого элемента очереди

int L; // ИНДЕКС ПОСЛЕДНЕГО

bool IsEmpty; // признак пустой очереди

};

QUEUE T; // экземпляр очереди над которой выполняются операции

Тогда включение и исключение примут вид:

 

bool PutInQueue(int x){

// поместить элемент x в очередь

// возвращает истину в случае успеха

T.L=(T.L==M-1) ? 0 : T.L+1;

if(!T.IsEmpty && T.F==T.L){

return false;

}

T.Q[T.L]=x;

T.IsEmpty=false;

return true;



}

int TakeFromQueue(){

// Взять элемент из очереди T

// функция возвращает взятый из очереди элемент

// если очередь пуста, то возвращается INT_MAX (defined в limits.h)

int z;

bool fl=T.F==T.L;

if(!T.IsEmpty){

z=T.Q[T.F];

T.F=T.F==M-1 ? 0 : T.F+1;

T.IsEmpty=fl;

} else {

z=INT_MAX;

}

return z;

}

 

Контрольные вопросы

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

2) Как избежать перемещения очереди по памяти?

3) Вычислите значение U1000000, если Un=Un-1+2Un-2-3Un-3 и U0=U1=U2=U3=1



<== предыдущая лекция | следующая лекция ==>
Вычисление выражения, представленного в ПОЛИЗ | Размещение прямоугольных массивов в последовательной памяти


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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