思路
把数据 1,2,3加载进一个栈,会得到下图:
现在把同样的数据(1,2,3)加载进队列:
题目要求我们用队列模拟栈,也就是:
实现方法
我们只需要把A队尾的元素弹出,再从队头加入即可:
class MyStack {
public:
queue<int>q1;
MyStack() {
}
void push(int x) {
q1.push(x);
}
int pop() {
//栈:后进先出 (栈顶)3,2,1
//q1:先进先出 (出) 1,2,3 (进)
int size=q1.size();
size--;
while(size--)
{
//把q1里面的1,2弹出,添加到末尾
q1.push(q1.front());
q1.pop();
}
//q1:先进先出 (栈尾)3,2,1(栈顶)
int result=q1.front();
q1.pop();
return result;
}
int top() {
//q1:先进先出 (队尾)3,2,1(队顶) 队尾就是栈顶
return q1.back();
}
bool empty() {
//队尾为空栈就为空
if(q1.empty())return true;
else return false;
}
};