Реализация очереди с использованием связанного списка в C++

Вот реализация очереди с использованием связанного списка в C++:

#include <iostream>
// Node structure for linked list
struct Node {
    int data;
    Node* next;
};
// Queue class
class Queue {
private:
    Node* front;
    Node* rear;
public:
    // Constructor
    Queue() {
        front = nullptr;
        rear = nullptr;
    }
// Destructor
    ~Queue() {
        while (!isEmpty()) {
            dequeue();
        }
    }
// Check if the queue is empty
    bool isEmpty() {
        return (front == nullptr);
    }
// Enqueue an element
    void enqueue(int value) {
        Node* newNode = new Node;
        newNode->data = value;
        newNode->next = nullptr;
        if (isEmpty()) {
            front = newNode;
            rear = newNode;
        } else {
            rear->next = newNode;
            rear = newNode;
        }
    }
// Dequeue an element
    void dequeue() {
        if (isEmpty()) {
            std::cout << "Queue is empty." << std::endl;
        } else {
            Node* temp = front;
            front = front->next;
            if (front == nullptr) {
                rear = nullptr;
            }
            delete temp;
        }
    }
// Get the front element of the queue
    int getFront() {
        if (isEmpty()) {
            std::cout << "Queue is empty." << std::endl;
            return -1;
        }
        return front->data;
    }
// Display the queue
    void display() {
        if (isEmpty()) {
            std::cout << "Queue is empty." << std::endl;
        } else {
            Node* temp = front;
            while (temp != nullptr) {
                std::cout << temp->data << " ";
                temp = temp->next;
            }
            std::cout << std::endl;
        }
    }
};
int main() {
    Queue queue;
    queue.enqueue(10);
    queue.enqueue(20);
    queue.enqueue(30);
    queue.display();    // Output: 10 20 30
    std::cout << "Front element: " << queue.getFront() << std::endl;    // Output: 10
    queue.dequeue();
    queue.display();    // Output: 20 30
    return 0;
}