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