C++定义一个链队列,实现入队和出队
时间: 2023-11-04 12:18:24 浏览: 122
链列是一种基于链表实现的队列,它可以动态增长和缩小,比较灵活。下面是一个简单的 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
// 定义链表结点
struct Node {
int data;
Node* next;
};
// 定义链队列
class Queue {
public:
Queue() {
front = rear = new Node();
front->next = NULL;
}
~Queue() {
while (front != NULL) {
Node* p = front;
front = front->next;
delete p;
}
}
// 判断队列是否为空
bool isEmpty() {
return front == rear;
}
// 入队
void enqueue(int x) {
Node* p = new Node();
p->data = x;
p->next = NULL;
rear->next = p;
rear = p;
}
// 出队
int dequeue() {
if (isEmpty()) {
cout << "Queue is empty" << endl;
return -1;
}
Node* p = front->next;
int x = p->data;
front->next = p->next;
if (rear == p) rear = front;
delete p;
return x;
}
private:
Node* front; // 队头指针
Node* rear; // 队尾指针
};
int main() {
Queue q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
cout << q.dequeue() << endl;
cout << q.dequeue() << endl;
cout << q.dequeue() << endl;
cout << q.dequeue() << endl;
return 0;
}
```
在上面的代码中,我们使用了链表结点来实现队列元素的存储,同时定义了队头指针 front 和队尾指针 rear 来指向队列的头和尾。在入队操作中,我们创建一个新的结点并将其插入到队列尾部;在出队操作中,我们删除队头元素并将队头指针指向下一个元素。当队列为空时,我们输出错误信息并返回一个默认值。
阅读全文