Circular Queue (Data Structure) in C++



 


#include<iostream>

using namespace std;

static const int SIZE=5;


//CIRCULAR QUEUE

class CircularQueue{

int front;

int rear;

int arr[SIZE];

public:

CircularQueue(){

front=rear=-1;

}

//enqueue

void enQueue(int d)

{

if(front==0 && rear==SIZE-1)

{

cout<<"Queue is full\n";

return;

}

if(front==-1)

{

front=rear=0;

}

else

{

if(rear==SIZE-1){

rear=0;

}

else

{

rear=rear+1;

}

}

arr[rear]=d;

}

//dequeue

int deQueue(){

if(front==-1)

{

cout<<"Queue is empty\n";

return 0;

}

int d =arr[rear];

if(front==rear){

front=rear=-1;

}

else

{

if(front==SIZE-1)

{

front=0;

}

else

{

front++;

}

}

return d;

}

//display

void display(){

if(front==-1){

cout<<"list is empty\n";

}

if(front>-1 && rear<=SIZE-1){

for(int i=front; i<=rear; i++){

cout<<arr[i]<<"\t";

}

}

if(rear<front){

for(int i=front; i<=SIZE-1;i++){

cout<<arr[i]<<"\t";

}

for(int j=0;j<=rear;j++)

cout<<arr[j]<<"\t";

}

}

};


//MAIN

int main(){

CircularQueue queue;

queue.enQueue(10);

queue.enQueue(15);

queue.enQueue(20);

queue.enQueue(25);

queue.enQueue(30);

queue.enQueue(35);

queue.display();

cout<<endl;

queue.deQueue();

queue.deQueue();

queue.enQueue(35);


queue.display();

}

Comments