C++ Implementation (Linked-List-Based Queue):
unknown
c_cpp
9 months ago
1.7 kB
4
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