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 }