What is Queue Data Structure ? | Queue Operations & Working | C++ Program to Implement Queue Operations

Definition – 
Queue is a linear data structure which operates in a First IN First OUT or Last IN Last OUT.
  • It is named queue as it behaves like a real-world queue, for example – queue(line) of cars in a single lane, queue of people waiting at food counter etc.
  • Queue is an abstract data type with a bounded (predefined) capacity.
  • It is a simple data structure that allows adding and removing elements in a particular order.
  • The order is FIFO(First IN First OUT) or LILO(Last In Last Out).

queue data structure diagram

Standard Queue Operations – 
  • Enqueue() – Add item to the queue from the REAR.
  • Dequeue() – Remove item from the queue from the FRONT.
  • isFull() – Check if queue is full or not.
  • isEmpty() – Check if queue empty or not.
  • count() – Get number of items in the queue.
Some types of Queue (We will discuss them in detail in other articles)-
  • Simple Queue
  • Circular Queue
  • Priority Queue
Some Applications of Queue Data Structure –

Queue is used when things but have to be processed in First In First Out order. Like –

  • CPU scheduling, Disk Scheduling.
  • Handling of interrupts in real-time systems. The interrupts are handled in the same order as they arrive, First come first served.
  • In real life, Call Center phone systems will use Queues, to hold people calling them in an order, until a service representative is free.
  • When data is transferred asynchronously between two processes. Queue is used for synchronization.
Program Code for Queue Data Structure in C++ Programming –
#include<iostream>

using namespace std;

class Queue {
  private:
    int front;
  int rear;
  int arr[5];

  public:
    Queue() {
      front = -1;
      rear = -1;
      for (int i = 0; i < 5; i++) {
        arr[i] = 0;
      }
    }
  bool isEmpty() {
    if (front == -1 && rear == -1)
      return true;
    else
      return false;
  }
  bool isFull() {
    if (rear == 4)
      return true;
    else
      return false;
  }
  void enqueue(int val) {
    if (isFull()) {
      cout << "Queue full" << endl;
      return;
    } else if (isEmpty()) {
      rear = 0;
      front = 0;
      arr[rear] = val;
    } else {
      rear++;
      arr[rear] = val;
    }

  }

  int dequeue() {
    int x = 0;
    if (isEmpty()) {
      cout << "Queue is Empty" << endl;
      return x;
    } else if (rear == front) {
      x = arr[rear];
      rear = -1;
      front = -1;
      return x;
    } else {
      cout << "front value: " << front << endl;
      x = arr[front];
      arr[front] = 0;
      front++;
      return x;
    }
  }

  int count() {
    return (rear - front + 1);
  }

  void display() {
    cout << "All values in the Queue are - " << endl;
    for (int i = 0; i < 5; i++) {
      cout << arr[i] << "  ";
    }
  }

};

int main() {
  Queue q1;
  int value, option;

  do {
    cout << "\n\nWhat operation do you want to perform? Select Option number. Enter 0 to exit." << endl;
    cout << "1. Enqueue()" << endl;
    cout << "2. Dequeue()" << endl;
    cout << "3. isEmpty()" << endl;
    cout << "4. isFull()" << endl;
    cout << "5. count()" << endl;
    cout << "6. display()" << endl;
    cout << "7. Clear Screen" << endl << endl;

    cin >> option;

    switch (option) {
    case 0:
      break;
    case 1:
      cout << "Enqueue Operation \nEnter an item to Enqueue in the Queue" << endl;
      cin >> value;
      q1.enqueue(value);
      break;
    case 2:
      cout << "Dequeue Operation \nDequeued Value : " << q1.dequeue() << endl;
      break;
    case 3:
      if (q1.isEmpty())
        cout << "Queue is Empty" << endl;
      else
        cout << "Queue is not Empty" << endl;
      break;
    case 4:
      if (q1.isFull())
        cout << "Queue is Full" << endl;
      else
        cout << "Queue is not Full" << endl;
      break;
    case 5:
      cout << "Count Operation \nCount of items in Queue : " << q1.count() << endl;
      break;
    case 6:
      cout << "Display Function Called - " << endl;
      q1.display();
      break;
    case 7:
      system("cls");
      break;
    default:
      cout << "Enter Proper Option number " << endl;
    }

  } while (option != 0);

  return 0;
}
YouTube video tutorials –

1. Queue Data Structure Theory –

2. Queue Data Structure C++ Program Implementation –

Leave a Reply

Your email address will not be published. Required fields are marked *