用c++语言写出一个链式队列
时间: 2024-10-15 21:21:33 浏览: 27
链式队列是一种利用链表结构实现的线性数据结构,它遵循先进先出(FIFO)的原则。在C++中,我们可以创建一个简单的单向链表作为基础,然后添加队列的操作,如入队和出队。下面是一个简单的链式队列的实现:
```cpp
#include <iostream>
// 链节点定义
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
// 队列类
class Queue {
private:
Node* front; // 队头
Node* rear; // 队尾
public:
// 构造函数,初始化为空队列
Queue() : front(nullptr), rear(nullptr) {}
// 查看队列是否为空
bool isEmpty() const {
return front == nullptr;
}
// 入队操作
void enqueue(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
if (isEmpty()) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
// 出队操作
int dequeue() {
if (isEmpty()) {
throw std::runtime_error("Queue is empty");
}
int removedValue = front->data;
Node* temp = front;
front = front->next;
delete temp; // 释放内存
if (front == nullptr) {
rear = nullptr;
}
return removedValue;
}
// 打印队列元素
void display() const {
Node* current = front;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
}
};
int main() {
Queue queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
std::cout << "Original queue: ";
queue.display();
std::cout << "Dequeue: " << queue.dequeue() << "\n";
std::cout << "After dequeue: ";
queue.display();
return 0;
}
```
这个程序中,`enqueue`用于添加元素到队列尾部,`dequeue`用于从队列头部移除并返回元素,如果队列为空则抛出异常。`display`方法用于查看当前队列的内容。
阅读全文