Skip to content

Commit 8649dd7

Browse files
committed
Circular queue implementation
1 parent 53a52e0 commit 8649dd7

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed

Queue/CircularQueue.cpp

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
class CircularQueue // cricular queue
5+
{
6+
int *arr;
7+
// current size and capacity of array
8+
int currSize, cap;
9+
// front and rear pointers
10+
int f, r;
11+
12+
public:
13+
// constructor to initialize array
14+
CircularQueue(int size)
15+
{
16+
cap = size;
17+
arr = new int[cap];
18+
currSize = 0;
19+
f = 0, r = -1;
20+
}
21+
22+
void push(int data) // to push element in circular queue
23+
{
24+
if (currSize == cap) // to check if Circular queue is full
25+
{
26+
cout << "CQ is full\n";
27+
return;
28+
}
29+
30+
r = (r + 1) % cap;
31+
arr[r] = data;
32+
currSize++;
33+
}
34+
35+
void pop() // to pop element from circular queue
36+
{
37+
if (empty()) // to check if Circular queue is full
38+
{
39+
cout << "CQ is full\n";
40+
return;
41+
}
42+
43+
f = (f + 1) % cap;
44+
currSize--;
45+
}
46+
47+
int front() // to return front value of circular queue
48+
{
49+
if (empty()) // to check if Circular queue is full
50+
{
51+
cout << "CQ is full\n";
52+
return -1;
53+
}
54+
55+
return arr[f];
56+
}
57+
58+
bool empty() // to check if circular queue is empty
59+
{
60+
return currSize == 0;
61+
}
62+
63+
void printArr() // to print array
64+
{
65+
for (int i = 0; i < cap; i++)
66+
{
67+
cout << arr[i] << " ";
68+
}
69+
cout << endl;
70+
}
71+
};
72+
73+
int main()
74+
{
75+
CircularQueue cq(3);
76+
77+
cq.push(1);
78+
cq.push(2);
79+
cq.push(3);
80+
81+
cq.pop();
82+
cq.push(4);
83+
84+
while (!cq.empty())
85+
{
86+
cout << cq.front() << " ";
87+
cq.pop();
88+
}
89+
cout << endl;
90+
91+
return 0;
92+
}

Queue/CircularQueue.exe

45.6 KB
Binary file not shown.

0 commit comments

Comments
 (0)