Очередь циклическая. Примером такой очереди в нашем ПК является буфер клавиатуры. В данном примере будет описана очередь, реализованная на массиве, и программа, использующая очередь для одного алгоритма. Программа многофайловая, состоит из 3-х файлов:
1-ый файл – заголовочный –описывает тип структуры-очереди, объявляет прототипы функций - операций, это интерфейсный файл.
2-ой файл – файл реализациисодержит описание функций- операций, спецификации этого типа данных
3-ий файл – главный файл с алгоритмом, использующим очереди.
Абстрактный тип данных (АТД) –это тип данных (набор значений и совокупность операций для этих значений), доступ к которому осуществляется только через интерфейс. Программа, которая использует АТД, называется клиентской (3-ий файл).
//queue3f.h -интерфейсный файл
#include <iostream>
#include <fstream>
const int NN=100;
{ int beg;
tip x[NN];
};
void clrqu(queue &q);
void insqu(queue &q, tip a);
void remqu (queue &q);
void wrfqu(ofstream &fout,queue q);
//queue3fR.cpp - файл реализации
#include "queue3f.h"
//очистка очереди
void clrqu(queue &q){q.beg=0;q.size=0;}
//добавление элемента в очередь
void insqu(queue &q, tip a)
{q.x[(q.beg+q.size)%NN]=a;
q.size++;
}
//удаление элемента из непустой очереди
void remqu (queue &q)
{q.size--;
if(q.beg==NN-1) q.beg=0;
else q.beg++;
}
//выбрать элемент из очереди без удаления
{return q.x[q.beg];}
//проверка очереди на пустоту
bool emptyqu (queue q){return q.size==0;}
//проверка очереди на заполненность
bool over (queue q){return q.size==NN;}
//вывод элементов очереди в файл
void wrfqu(ofstream &fout,queue s)
{while (!empty(s))
{fout<<s.x[s.beg]<<"\n";remqu(s);}}
//queue3fgl.cpp -главная программа (клиентская часть)
#include <iomanip>
#include "queue3f.h"
//использование очереди: записать в файл //первые N чисел,