用队列实现栈
题目要求
题解
队列和栈可以“用二求一”,之前有做过用栈实现队列。这道题简单来说,就是用两个队列,一个用来辅助存值,在出栈入栈时改变次序。
代码
class MyStack {
// 双队列实现栈
queue<int> q1;
queue<int> q2;
public:
//初始化
MyStack() {
}
//入队列
void push(int x) {
q1.push(x);
}
//移除堆栈顶部的元素并返回该元素
int pop() {
while(q1.size()>1){
int get=q1.front();
q2.push(get);
q1.pop();
}
int num=q1.front();
q1.pop();
while(q2.size()>0){
int get=q2.front();
q1.push(get);
q2.pop();
}
return num;
}
//得到顶端元素
int top() {
// if(q1.size()>1){
// while(!q1.empty()){
// q2.push(q1.pop());
// }
// }
// return q1.peek();
return q1.back();
}
//判断是否为空
bool empty() {
return q1.empty();
}
};