使用stl中的单端队列queue实现栈
时间: 2024-03-22 18:42:53 浏览: 81
可以使用两个单端队列queue来实现栈的功能。
具体实现如下:
1. 定义一个类Stack,成员变量为两个queue<int>类型的队列,分别为queue1和queue2。
2. 实现push函数,将元素插入到queue1中。
3. 实现pop函数,先将queue1中的元素全部转移到queue2中,直到queue1中只剩下一个元素。将这个元素弹出,再将queue2中的元素转移到queue1中。
4. 实现top函数,与pop函数类似,但是不弹出元素。
5. 实现empty函数,判断queue1和queue2是否都为空。
下面是完整的代码实现:
```c++
#include <queue>
using namespace std;
class Stack {
public:
void push(int x) {
q1.push(x);
}
int pop() {
int size = q1.size();
for (int i = 0; i < size - 1; i++) {
q2.push(q1.front());
q1.pop();
}
int top = q1.front();
q1.pop();
swap(q1, q2);
return top;
}
int top() {
int size = q1.size();
for (int i = 0; i < size - 1; i++) {
q2.push(q1.front());
q1.pop();
}
int top = q1.front();
q1.pop();
q2.push(top);
swap(q1, q2);
return top;
}
bool empty() {
return q1.empty() && q2.empty();
}
private:
queue<int> q1, q2;
};
```
阅读全文