bsc

Comprehensive codebase and coursework for the 4-year B.Sc. Computer Science Honours degree (WBSU)

git clone https://github.com/notamitgamer/bsc.git
· rebuilt hourlyOpen on GitHub
root / semester_2 / assignments / assignment_10.cpp

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 }