#include <iostream>
#include <stdlib.h>
using namespace std;
float q[7]; // массив, на основе которого строится очередь
int qnext = 0, qindex = 0, qlength = 7; // qnext - индекс занесения
// qindex - индекс извлечения
// qlenght - длина очереди
// *************ПРОСТАЯ ОЧЕРЕДЬ*******************************
// Занесение элемента в линейную очередь
void insertLinQ (float i)
{
if (qnext + 1 == qlength) // если переполнение
{
cout << "Мест нет!\n";
return;
}
qnext++; // смещение позиции записи
q[qnext] = i; // ввод данных
}
// Извлечение элемента из линейной очереди
float retrieveLinQ ()
{
if (qindex == qnext) // если индекс сохранения равен индексу извлечения
{
cout << "Очередь пуста!\n";
return 0;
}
qindex++; // смещение позиции считывания
return q[qindex]; // считывание
}
// ******************ЦИКЛИЧЕСКАЯ ОЧЕРЕДЬ*********************
float q2[5];
int qnext2 = 0, qindex2 = 0, qlength2 = 5;
// Занечение элемента в циклическую очередь
void insertCicQ (float j)
{
if (qnext2 + 1 == qindex2 || (qnext2 + 1 == qlength2 && !qindex2))
{
cout << "Мест нет!\n";
return;
}
q2[qnext2] = j; // запись
qnext2++; // смещение позиции записи
if (qnext2 == qlength2)
qnext2 = 0; // циклический переход
}
// Извлечение элемента из циклической очереди
float retrieveCicQ ()
{
if (qindex2 == qlength2)
qindex2 = 0; // циклический переход
if (qindex2 == qnext2)
{
cout << "Очередь пуста!\n";
return 0;
}
qindex2++; // смещение позиции считывания
return q2[qindex2-1]; // считывание
}
int main (int argc, char* argv[])
{
setlocale (0, "rus");
cout << "***ЛИНЕЙНАЯ ОЧЕРЕДЬ***\n";
insertLinQ (1); // 1
insertLinQ (5); // 5 1
insertLinQ (8); // 8 5 1
cout << retrieveLinQ() << "\n"; // возвр. 1, в очереди 8 5
insertLinQ (7); // 7 8 5
cout << retrieveLinQ() << "\n"; // возвр. 5, в очереди 7 8
cout << retrieveLinQ() << "\n"; // возвр. 8, в очереди 7
insertLinQ (11); // 11 7
insertLinQ (10); // 10 11 7
insertLinQ (4); // 4 10 11 7
cout << "***ЦИКЛИЧЕСКАЯ ОЧЕРЕДЬ***\n";
insertCicQ (5); // 5
insertCicQ (7); // 7 5
insertCicQ (9); // 9 7 5
cout << retrieveCicQ() << "\n"; // возвр. 5, в очереди 9 7
insertCicQ (3); // 3 9 7
insertCicQ (11); // 11 3 9 7
cout << retrieveCicQ() << "\n"; // возвр. 7, в очереди 11 3 9
insertCicQ (15); // 15 11 3 9
insertCicQ (4); // ПЕРЕПОЛНЕНИЕ, в очереди 15 11 3 9
cout << retrieveCicQ() << "\n"; // возвр. 9, в очереди 15 11 3
cout << retrieveCicQ() << "\n"; // возвр. 3, в очереди 15 11
cout << retrieveCicQ() << "\n"; // возвр. 11, в очереди 15
cout << retrieveCicQ() << "\n"; // возвр. 15, очередь пуста
cout << retrieveCicQ() << "\n"; // Очередь пуста!
//system ("pause");
return 0;
}