C++实现一个队列,该队列使用链表来存储数据。
时间: 2024-08-12 14:08:16 浏览: 57
在C++中,我们可以使用链表来实现一个队列。链表非常适合作为队列的数据结构,因为它支持在头部添加元素(入队)和删除元素(出队),这正是队列的操作特点。这里是一个简单的单链表实现的队列示例:
```cpp
template <typename T>
class Node {
public:
T data;
Node<T>* next;
Node(T data) : data(data), next(nullptr) {}
};
template <typename T>
class Queue {
private:
Node<T>* front; // 队首节点
Node<T>* rear; // 队尾节点
public:
Queue() : front(nullptr), rear(nullptr) {}
// 插入元素到队尾
void enqueue(T value) {
Node<T>* newNode = new Node<T>(value);
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
// 从队首删除元素
void dequeue() {
if (front == nullptr) {
throw std::runtime_error("Queue is empty");
}
Node<T>* temp = front;
front = front->next;
delete temp;
if (front == nullptr) {
rear = nullptr;
}
}
// 查看队列是否为空
bool isEmpty() const {
return front == nullptr;
}
// 返回队列的大小
size_t size() const {
size_t count = 0;
Node<T>* current = front;
while (current != nullptr) {
count++;
current = current->next;
}
return count;
}
// 其他操作(如获取队首元素、清空队列等)可以根据需求添加
};
```
阅读全文