Circular Queue
Circular Queue
#define SIZE 5
class queue
{
private:
int arr[SIZE];
int front;
int rear;
public:
queue()
{
front = -1;
rear = -1;
}
bool is_queue_empty(void)
{
return ( rear == -1 && front == rear );
}
bool is_queue_full(void)
{
return ( front == (rear+1)%SIZE );
}
void dequeue(void)
{
if( front == rear )//we are deleting last ele
{
front = rear = -1;//reinitialize front and rear to -1
}
else
{
/*- increment the value of front by 1 -- i.e. delete ele from the
queue which
is at front end. */
front = (front + 1) % SIZE;
}
}
int get_front(void)
{
//return the value of ele which is at front end
return ( arr[ front ] );
}
};
int main(void)
{
int choice;
queue q;
int ele;
while(1)
{
choice = menu();
switch(choice)
{
case EXIT: exit(0);
case ENQUEUE:
//check queue is not full
if( !q.is_queue_full())
{
cout << "enter the ele: ";
cin >> ele;
q.enqueue(ele);
cout << ele << " inserted into the queue ..." << endl;
}
else
cout << "queue is full !!!" << endl;
break;
case DEQUEUE:
//- check queue is not empty
if( !q.is_queue_empty() )
{
ele = q.get_front();
q.dequeue();
cout << "deleted ele is: " << ele << endl;
}
else
cout << "queue is empty !!!" << endl;
break;
}
}
return 0;
}