c++定义一个链队列,实现入队和出队操作
时间: 2023-11-04 19:07:13 浏览: 109
以下是一个基于模板类的链式队列的实现,包括入队和出队操作:
```c++
#include <iostream>
template <typename T>
class QueueNode {
public:
T data;
QueueNode<T>* next;
};
template <typename T>
class Queue {
private:
QueueNode<T>* front; // 队首指针
QueueNode<T>* rear; // 队尾指针
public:
Queue() {
front = rear = nullptr;
}
~Queue() {
QueueNode<T>* p;
while (front != nullptr) {
p = front;
front = front->next;
delete p;
}
}
bool IsEmpty() const {
return front == nullptr;
}
void EnQueue(const T& x) {
QueueNode<T>* p = new QueueNode<T>;
p->data = x;
p->next = nullptr;
if (front == nullptr) {
front = rear = p;
}
else {
rear->next = p;
rear = p;
}
}
bool DeQueue(T& x) {
if (IsEmpty()) {
return false;
}
QueueNode<T>* p = front;
x = p->data;
front = front->next;
if (front == nullptr) {
rear = nullptr;
}
delete p;
return true;
}
};
int main() {
Queue<int> q;
q.EnQueue(1);
q.EnQueue(2);
q.EnQueue(3);
int x;
while (q.DeQueue(x)) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
上述代码中,`Queue` 类使用了模板类,可以存储任意类型的数据。`EnQueue` 方法用于入队操作,将一个元素加入到队尾;`DeQueue` 方法用于出队操作,将队首元素删除并返回其值。`IsEmpty` 方法用于判断队列是否为空。
阅读全文