https://leetcode.cn/problems/implement-stack-using-queues/description/
<aside> 💡
思路:队列两个口能连通形成循环,
class MyStack {
public:
MyStack(): sz(0) {
}
void push(int x) {
// 队尾模拟栈头
que.push(x);
++sz;
}
int pop() {
int tmp = 0;
// 不断将队头元素移到队尾,直到最开始的队尾到达队头
for (int i = 0; i < sz - 1; ++i) {
tmp = que.front();
que.pop();
que.push(tmp);
}
tmp = que.front();
que.pop();
--sz;
return tmp;
}
int top() {
return que.back();
}
bool empty() {
return que.empty();
}
private:
queue<int> que;
int sz;
};