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_11.cpp

assignment_11.cpp (1944B)


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