assignment_10.cpp (2171B)
1 /* Perform Circular Queues operations using Array. */ 2 3 #include <iostream> 4 using namespace std; 5 6 class CircularQueue { 7 private: 8 int *queue; 9 int front, rear, size; 10 11 public: 12 CircularQueue(int n) { 13 size = n; 14 queue = new int[size]; 15 front = -1; 16 rear = -1; 17 } 18 19 bool isEmpty() { return front == -1; } 20 bool isFull() { return (rear + 1) % size == front; } 21 22 void enqueue(int val) { 23 if (isFull()) { cout << "Queue is Full!\n"; return; } 24 if (isEmpty()) { front = 0; rear = 0; } 25 else rear = (rear + 1) % size; 26 queue[rear] = val; 27 } 28 29 void dequeue() { 30 if (isEmpty()) { cout << "Queue is Empty!\n"; return; } 31 int val = queue[front]; 32 if (front == rear) { front = -1; rear = -1; } 33 else front = (front + 1) % size; 34 cout << "Removed: " << val << endl; 35 } 36 37 void peek() { 38 if (isEmpty()) { cout << "Queue is Empty!\n"; return; } 39 cout << "Front element: " << queue[front] << endl; 40 } 41 42 void display() { 43 if (isEmpty()) { cout << "Queue is Empty!\n"; return; } 44 int i = front; 45 while (true) { 46 cout << queue[i] << " "; 47 if (i == rear) break; 48 i = (i + 1) % size; 49 } 50 cout << endl; 51 } 52 53 ~CircularQueue() { delete[] queue; } 54 }; 55 56 int main() { 57 int n, choice, val; 58 cout << "Enter queue size: "; 59 cin >> n; 60 if (n <= 0) { cout << "Invalid size!\n"; return 0; } 61 62 CircularQueue q(n); 63 while (true) { 64 cout << "1.enqueue 2.dequeue 3.peek 4.isEmpty 5.isFull 6.Display 0.Exit\n"; 65 cout << "Enter your choice: "; 66 cin >> choice; 67 68 switch (choice) { 69 case 1: cout << "Enter value: "; cin >> val; q.enqueue(val); break; 70 case 2: q.dequeue(); break; 71 case 3: q.peek(); break; 72 case 4: cout << (q.isEmpty() ? "Empty\n" : "Not empty\n"); break; 73 case 5: cout << (q.isFull() ? "Full\n" : "Not full\n"); break; 74 case 6: q.display(); break; 75 case 0: cout << "Exiting...\n"; return 0; 76 default: cout << "Wrong choice.\n"; 77 } 78 } 79 }