Queue Lab Manual
Queue Lab Manual
Theory
Queue
A Queue is a linear data structure that follows the FIFO (First In, First Out) principle.
Dequeue (Remove)
#include <iostream>
#define SIZE 5
using namespace std;
class Queue {
int arr[SIZE];
int front, rear;
public:
Queue() {
front = -1;
rear = -1;
}
bool isFull() {
return rear == SIZE - 1;
}
bool isEmpty() {
return front == -1 || front > rear;
}
Dequeue (Remove)
#include<iostream>
using namespace std;
class Node {
public:
int data;
Node* next;
Node(int value) {
data = value;
next = nullptr;
}
};
class Queue {
Node* front;
Node* rear;
public:
Queue() {
front = rear = nullptr;
}
bool isEmpty() {
return front == nullptr;
}
void enqueue(int value) {
Node* newNode = new Node(value);
if (isEmpty()) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
cout << "Enqueued: " << value << endl;
}
void dequeue() {
if (isEmpty()) {
cout << "Queue Underflow!" << endl;
return;
}
Node* temp = front;
cout << "Dequeued: " << front->data << endl;
front = front->next;
delete temp;
}
void display() {
if (isEmpty()) {
cout << "Queue is empty!" << endl;
return;
}
Node* temp = front;
cout << "Queue elements: ";
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
};
int main() {
Queue q;
q.enqueue(10);
q.enqueue(20);
q.enqueue(30);
q.dequeue();
q.display();
return 0;
}
In an array-based queue, we use a fixed-size array to store elements and track the front and
rear pointers.
Time Complexity
Space Complexity
• O(n): Space required for the array of size n. This is static and can lead to wasted space if
the queue isn't full.
In a linked-list-based queue, each element is a node containing data and a pointer to the next
node. front and rear pointers are used to track the queue.
Time Complexity
Space Complexity
• O(n): Space required for n nodes, where each node uses extra space for the next pointer.