This C++ program demonstrates how to implement a queue using an array. A queue is a FIFO (First In First Out) data structure used in many programming and system applications.
Program Code
#include <iostream> #define SIZE 5 class Queue { private: int items[SIZE], front, rear; public: Queue() : front(-1), rear(-1) {} bool isFull() { return (rear + 1) % SIZE == front; } bool isEmpty() { return front == -1; } void enqueue(int element) { if (isFull()) { std::cout << "Queue is full" << std::endl; } else { if (front == -1) front = 0; rear = (rear + 1) % SIZE; items[rear] = element; std::cout << "Inserted " << element << std::endl; } } int dequeue() { if (isEmpty()) { std::cout << "Queue is empty" << std::endl; return -1; } else { int element = items[front]; if (front == rear) { front = -1; rear = -1; } else { front = (front + 1) % SIZE; } return element; } } void display() { if (isEmpty()) { std::cout << "Queue is empty" << std::endl; } else { std::cout << "Front index-> " << front << std::endl; std::cout << "Items -> "; for (int i = front; i != rear; i = (i + 1) % SIZE) { std::cout << items[i] << " "; } std::cout << items[rear] << std::endl; std::cout << "Rear index-> " << rear << std::endl; } } }; int main() { Queue q; q.enqueue(1); q.enqueue(2); q.enqueue(3); q.enqueue(4); q.enqueue(5); q.enqueue(6); // Queue is full q.display(); int elem = q.dequeue(); std::cout << "Deleted Element -> " << elem << std::endl; q.display(); q.enqueue(7); q.display(); return 0; }
Class and Function Documentation
- Constructor Queue(): Initializes a new queue with a fixed size defined by the SIZE macro.
- bool isFull(): Checks if the queue is full. Returns true if full, false otherwise.
- bool isEmpty(): Checks if the queue is empty. Returns true if empty, false otherwise.
- void enqueue(int element): Adds an element to the rear of the queue if it is not full, otherwise outputs an error message.
- int dequeue(): Removes and returns the front element of the queue. If the queue is empty, returns -1 and outputs an error message.
- void display(): Displays all elements from front to rear, also showing the front and rear indices, useful for debugging and understanding the internal state of the queue.
Example Usage
Queue q; q.enqueue(1); q.enqueue(2); q.enqueue(3); q.display(); // Outputs the contents of the queue and the front and rear indices int elem = q.dequeue(); std::cout << "Deleted Element -> " << elem << std::endl; // Outputs the deleted element