Skip to content

Commit

Permalink
Merge pull request #152 from technicalreju/main
Browse files Browse the repository at this point in the history
Circular_Queue.cpp
  • Loading branch information
aman-raza authored Oct 4, 2021
2 parents 09606ba + 5698ea2 commit 70c796c
Showing 1 changed file with 130 additions and 0 deletions.
130 changes: 130 additions & 0 deletions Circular_Queue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
#include<bits/stdc++.h>
using namespace std;

class Queue
{

int rear, front;


int size;
int *arr;

Queue(int s)
{
front = rear = -1;
size = s;
arr = new int[s];
}

void enQueue(int value);
int deQueue();
void displayQueue();
};


void Queue::enQueue(int value)
{
if ((front == 0 && rear == size-1) ||
(rear == (front-1)%(size-1)))
{
printf("\nQueue is Full");
return;
}

else if (front == -1) /* Insert First Element */
{
front = rear = 0;
arr[rear] = value;
}

else if (rear == size-1 && front != 0)
{
rear = 0;
arr[rear] = value;
}

else
{
rear++;
arr[rear] = value;
}
}


int Queue::deQueue()
{
if (front == -1)
{
printf("\nQueue is Empty");
return INT_MIN;
}

int data = arr[front];
arr[front] = -1;
if (front == rear)
{
front = -1;
rear = -1;
}
else if (front == size-1)
front = 0;
else
front++;

return data;
}


void Queue::displayQueue()
{
if (front == -1)
{
printf("\nQueue is Empty");
return;
}
printf("\nElements in Circular Queue are: ");
if (rear >= front)
{
for (int i = front; i <= rear; i++)
printf("%d ",arr[i]);
}
else
{
for (int i = front; i < size; i++)
printf("%d ", arr[i]);

for (int i = 0; i <= rear; i++)
printf("%d ", arr[i]);
}
}


int main()
{
Queue q(5);


q.enQueue(14);
q.enQueue(22);
q.enQueue(13);
q.enQueue(-6);


q.displayQueue();


printf("\nDeleted value = %d", q.deQueue());
printf("\nDeleted value = %d", q.deQueue());

q.displayQueue();

q.enQueue(9);
q.enQueue(20);
q.enQueue(5);

q.displayQueue();

q.enQueue(20);
return 0;
}

0 comments on commit 70c796c

Please sign in to comment.