3 - Linear Queue Represented Using A Linear Array
3 - Linear Queue Represented Using A Linear Array
Source Code
#include<iostream>
using namespace std;
#define MAX_SIZE 5
class Queue {
private:
int front, rear;
int arr[MAX_SIZE];
public:
Queue() : front(-1), rear(-1) {}
bool isEmpty() {
return front == -1 && rear == -1;
}
bool isFull() {
return (rear + 1) % MAX_SIZE == front;
}
void enqueue(int value) {
if (isFull()) {
cout << "Queue is full. Cannot enqueue " << value << endl;
return;
}
if (isEmpty()) {
front = rear = 0;
} else {
rear = (rear + 1) % MAX_SIZE;
}
arr[rear] = value;
cout << value << " enqueued to the queue." << endl;
}
void dequeue() {
if (isEmpty()) {
cout << "Queue is empty. Cannot dequeue." << endl;
return;
}
cout << arr[front] << " dequeued from the queue." << endl;
if (front == rear) {
// Last element is dequeued, reset front and rear
front = rear = -1;
} else {
front = (front + 1) % MAX_SIZE;
}
}
void display() {
if (isEmpty()) {
cout << "Queue is empty." << endl;
return;
}
cout << "Queue elements: ";
int i = front;
do {
cout << arr[i] << " ";
i = (i + 1) % MAX_SIZE;
} while (i != (rear + 1) % MAX_SIZE);
cout << endl;
}
};
int main() {
Queue queue;
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
queue.display();
queue.dequeue();
queue.display();
queue.enqueue(40);
queue.enqueue(50);
queue.enqueue(60); // Attempt to enqueue when the queue is full
queue.display();
return 0;
}
Output:
10 enqueued to the queue.
20 enqueued to the queue.
30 enqueued to the queue.
Queue elements: 10 20 30
10 dequeued from the queue.
Queue elements: 20 30
40 enqueued to the queue.
50 enqueued to the queue.
60 enqueued to the queue.
Queue elements: 20 30 40 50 60