跳到主要内容

编写C++代码建立一个链式队列?

参考答案:

以下是一个简单的C++链式队列的实现。在这个实现中,我们定义了一个Node类来代表队列中的每个节点,以及一个Queue类来管理队列的操作,如入队、出队、查看队首元素等。

#include <iostream>

// 定义节点类
class Node {
public:
    int data;
    Node* next;

    Node(int data) : data(data), next(nullptr) {}
};

// 定义队列类
class Queue {
private:
    Node* front;  // 队首指针
    Node* rear;   // 队尾指针

public:
    Queue() : front(nullptr), rear(nullptr) {}

    // 入队
    void enqueue(int data) {
        Node* newNode = new Node(data);
        if (rear == nullptr) {
            front = rear = newNode;
        } else {
            rear->next = newNode;
            rear = newNode;
        }
    }

    // 出队
    void dequeue() {
        if (front == nullptr) {
            std::cout << "Queue is empty!" << std::endl;
            return;
        }
        Node* temp = front;
        front = front->next;
        if (front == nullptr) {
            rear = nullptr;
        }
        delete temp;
    }

    // 查看队首元素
    int frontElement() {
        if (front == nullptr) {
            std::cout << "Queue is empty!" << std::endl;
            return -1;
        }
        return front->data;
    }

    // 检查队列是否为空
    bool isEmpty() {
        return front == nullptr;
    }
};

int main() {
    Queue q;

    // 入队
    q.enqueue(1);
    q.enqueue(2);
    q.enqueue(3);

    // 查看队首元素
    std::cout << "Front element: " << q.frontElement() << std::endl;

    // 出队
    q.dequeue();

    // 再次查看队首元素
    std::cout << "Front element after dequeue: " << q.frontElement() << std::endl;

    return 0;
}

这个链式队列实现是基础的,没有考虑线程安全、内存优化等问题。在实际应用中,可能需要根据具体需求对其进行扩展和优化。