File tree 2 files changed +92
-0
lines changed
2 files changed +92
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments