用C++实现链队列,写出完整代码,包括主函数
时间: 2024-11-25 15:16:47 浏览: 21
c++实现凸包
4星 · 用户满意度95%
链队列是一种线性数据结构,它使用节点(每个节点包含数据和指向下一个节点的指针)来存储元素,并且队头和队尾的操作效率较高。以下是使用C++实现单向链表基础队列(仅支持在其头部插入和删除元素)的一个简单示例:
```cpp
#include <iostream>
// 链队列节点定义
struct Node {
int data;
Node* next; // 指向下一个节点
};
// 初始化节点
Node* createNode(int value) {
Node* newNode = new Node();
if (newNode != nullptr) {
newNode->data = value;
newNode->next = nullptr;
}
return newNode;
}
// 创建并初始化空链队列
Queue* createQueue() {
Queue* queue = new Queue();
queue->front_ = queue->rear_ = nullptr;
return queue;
}
// 在队尾添加元素
void enqueue(Queue* &queue, int value) {
Node* newNode = createNode(value);
if (queue->rear_) {
queue->rear_->next = newNode;
} else {
queue->front_ = queue->rear_ = newNode;
}
queue->size_++;
}
// 在队头删除元素并返回值
int dequeue(Queue* &queue) {
if (queue->isEmpty()) {
throw std::runtime_error("Queue is empty");
}
int value = queue->front_->data;
Node* temp = queue->front_;
queue->front_ = queue->front_->next;
if (queue->front_ == nullptr) {
queue->rear_ = nullptr;
}
delete temp;
queue->size_--;
return value;
}
// 检查队列是否为空
bool isEmpty(Queue* queue) {
return queue->front_ == nullptr;
}
// 返回队列大小
int size(Queue* queue) {
return queue->size_;
}
// 主函数演示链队列操作
int main() {
Queue* queue = createQueue();
// 添加元素到队列
enqueue(queue, 10);
enqueue(queue, 20);
enqueue(queue, 30);
// 打印队列元素
while (!isEmpty(queue)) {
std::cout << dequeue(queue) << " ";
}
// 清理内存
delete queue;
return 0;
}
```
阅读全文