#include <iostream>
using namespace std;
#define n 5

int queue[n], front = 0, count = 0;
const int MAX_QUEUE = n; //declare maximum size of queue
int rear = n-1; 

void enQueue() {
   int val;
  // if (rear == n - 1)
     // cout<<"Queue Overflow - Cannot insert"<<endl;
   //else {
      cout<<"Insert the element in queue : ";
      cin>>val;
      rear = (rear + 1) % MAX_QUEUE; //insert at back using modulo arithmetic
      queue[rear] = val;	//insert item
      ++count; //increment count
   //}
}
void deQueue() {
   if (rear < front) {
      cout<<"Queue Underflow - Cannot delete ";
   return ;
   } else {
   		front = (front+1) % MAX_QUEUE; //increment front using modulo arithmetic
   		cout<<"Element deleted from queue is : "<< queue[--front] <<endl;
      	--count; //decrement count
      	++front;
   }
}
void display() {
   if (rear == -1)
   cout<<"Queue is empty"<<endl;
   else {
      cout<<"Queue elements are : ";
      for (int i = front; i <= rear; i++)
         cout<<queue[i]<<" ";
      cout<<endl;
   }
}
int main() {
   int ch;
   cout<<"1) Insert - enQueue"<<endl;
   cout<<"2) Delete - deQueue "<<endl;
   cout<<"3) Display "<<endl;
   cout<<"4) Exit "<<endl;
do {
   cout<<"Enter your choice : ";
   cin>>ch;
   switch (ch) {
      case 1: enQueue ();
         break;
      case 2: deQueue ();
         break;
      case 3: display();
         break;
      case 4: cout<<"Exit"<<endl;
         break;
      default: cout<<"Invalid choice"<<endl;
   }
} while(ch!=4);
   return 0;
}

