П Р И Л О Ж Е Н И Е   6

ОЧЕРЕДЬ В ЦИКЛИЧЕСКОМ МАССИВЕ

#define MAXLENGTH 10
typedef int T;
class Queue
{
   int front, rear; //индексы головы и хвоста
   T elements[MAXLENGTH]; //массив для хранения элементов
 public:
   Queue () {front=0; rear=MAXLENGTH-1;}
   int Empty (void); //проверка на пустоту
   int Full (void); //проверка на полноту заполнения
   T Front (void); //неразрушающее чтение элемента
   void EnQueue (T x); //добавление элемента в очередь
   T DeQueue (void); //извлечение элемента из очереди
};

int Queue::Empty(void)
{
   if ((rear+1)%MAXLENGTH == front)
      return 1;
   return 0;
}

int Queue::Full(void)
{
   if ((rear+2)%MAXLENGTH == front)
      return 1;
   return 0;
}

T Queue::Front (void)
{
   return elements[front];
}

void Queue::EnQueue (T x)
{
   rear = (rear+1)%MAXLENGTH;
   elements[rear] = x;
}

T Queue::DeQueue (void)
{
   int temp = front;
   front = (front+1)%MAXLENGTH;
   return elements[temp];
}