C++ Implementation (Linked-List-Based Queue):
unknown
c_cpp
a year ago
1.7 kB
7
Indexable
#include <iostream>
class Node {
public:
int data;
Node* next;
Node(int value) {
data = value;
next = nullptr;
}
};
class LinkedListQueue {
private:
Node* front;
Node* rear;
public:
LinkedListQueue() {
front = nullptr;
rear = nullptr;
}
bool IsEmpty() {
return (front == nullptr);
}
void Enqueue(int x) {
Node* newNode = new Node(x);
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
std::cout << "Enqueued: " << x << std::endl;
}
void Dequeue() {
if (IsEmpty()) {
std::cout << "Queue Underflow!" << std::endl;
return;
}
Node* temp = front;
std::cout << "Dequeued: " << temp->data << std::endl;
front = front->next;
if (front == nullptr) {
rear = nullptr; // If the queue becomes empty
}
delete temp;
}
int Peek() {
if (IsEmpty()) {
std::cout << "Queue is empty!" << std::endl;
return -1;
}
return front->data;
}
~LinkedListQueue() {
while (!IsEmpty()) {
Dequeue();
}
}
};
int main() {
LinkedListQueue q;
q.Enqueue(10);
q.Enqueue(20);
q.Enqueue(30);
std::cout << "Front element: " << q.Peek() << std::endl;
q.Dequeue();
q.Dequeue();
q.Dequeue();
q.Dequeue(); // Attempt to dequeue from empty queue
return 0;
}
Editor is loading...
Leave a Comment