题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
- 假设
stack_in
用于处理入栈操作,stack_out
用于处理出栈操作 stack_in
按栈的方式正常处理入栈数据;- 关键在于出栈操作
- 当
stack_out
为空时,需要先将每个stack_in
中的数据出栈后压入stack_out
- 反之,每次弹出
stack_out
栈顶元素即可
- 当
code
class Solution {
stack<int> stack_in;
stack<int> stack_out;
public:
void push(int node) {
stack_in.push(node);
}
int pop() {
if(stack_out.size() <= 0) {
while (stack_in.size() > 0) {
auto tmp = stack_in.top();
stack_in.pop();
stack_out.push(tmp);
}
}
auto ret = stack_out.top();
stack_out.pop();
return ret;
}
};