Advertisement
bgzlqmn

asw

May 25th, 2023
1,030
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.81 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Node {
  6.     int data;
  7.     Node* next;
  8. };
  9.  
  10. struct Queue {
  11.     Node* front;
  12.     Node* rear;
  13. };
  14.  
  15. void initializeQueue(Queue& queue) {
  16.     queue.front = nullptr;
  17.     queue.rear = nullptr;
  18. }
  19.  
  20. bool isEmpty(const Queue& queue) {
  21.     return (queue.front == nullptr);
  22. }
  23.  
  24. void enqueue(Queue& queue, int data) {
  25.     Node* newNode = new Node;
  26.     newNode->data = data;
  27.     newNode->next = nullptr;
  28.  
  29.     if (queue.front == nullptr) {
  30.         queue.front = newNode;
  31.         queue.rear = newNode;
  32.     } else {
  33.         queue.rear->next = newNode;
  34.         queue.rear = newNode;
  35.     }
  36. }
  37.  
  38. void dequeue(Queue& queue) {
  39.     if (isEmpty(queue)) {
  40.         cout << "Queue is empty. Unable to dequeue." << endl;
  41.     } else {
  42.         Node* temp = queue.front;
  43.         queue.front = queue.front->next;
  44.         delete temp;
  45.  
  46.         if (queue.front == nullptr) {
  47.             queue.rear = nullptr;
  48.         }
  49.     }
  50. }
  51.  
  52. void display(const Queue& queue) {
  53.     if (isEmpty(queue)) {
  54.         cout << "Queue is empty." << endl;
  55.     } else {
  56.         Node* current = queue.front;
  57.         cout << "Queue: ";
  58.         while (current != nullptr) {
  59.             cout << current->data << " ";
  60.             current = current->next;
  61.         }
  62.         cout << endl;
  63.     }
  64. }
  65.  
  66. int main() {
  67.     Queue queue1, queue2;
  68.     initializeQueue(queue1);
  69.     initializeQueue(queue2);
  70.     int choice, item;
  71.  
  72.     do {
  73.         cout << "\nQueue Operations:" << endl;
  74.         cout << "1. Enqueue" << endl;
  75.         cout << "2. Dequeue" << endl;
  76.         cout << "3. Display" << endl;
  77.         cout << "0. Exit" << endl;
  78.         cout << "Enter your choice: ";
  79.         cin >> choice;
  80.  
  81.         switch (choice) {
  82.             case 1:
  83.                 cout << "Enter the item to enqueue: ";
  84.                 cin >> item;
  85.                 if (item % 2 == 0) {
  86.                     enqueue(queue1, item);
  87.                 } else {
  88.                     enqueue(queue2, item);
  89.                 }
  90.                 break;
  91.  
  92.             case 2:
  93.                 if (!isEmpty(queue1)) {
  94.                     dequeue(queue1);
  95.                 } else if (!isEmpty(queue2)) {
  96.                     dequeue(queue2);
  97.                 } else {
  98.                     cout << "Both queues are empty. Unable to dequeue." << endl;
  99.                 }
  100.                 break;
  101.  
  102.             case 3:
  103.                 cout << "Queue 1: ";
  104.                 display(queue1);
  105.                 cout << "Queue 2: ";
  106.                 display(queue2);
  107.                 break;
  108.  
  109.             case 0:
  110.                 cout << "Exiting the program. Bye!" << endl;
  111.                 break;
  112.  
  113.             default:
  114.                 cout << "Invalid choice. Please enter a valid option." << endl;
  115.         }
  116.     } while (choice != 0);
  117.  
  118.     return 0;
  119. }
  120.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement