用两个栈实现队列_牛客题霸_牛客网
果果念
很简单的一道题目,栈的性质是FILO,First in last out,即先进后出;而队列的性质是FIFO,先进先出,借用两个栈可以实现模拟一个队列的操作;同理,借用两个队列也可以模拟栈的操作。只要记住,一个用来进,一个用来出就好。
代码
class Solution {
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int num;//模拟队列的队首元素
if (stack2.empty()) {
//stack2为空,将stack1中的元素按照顺序插入stack2中
while (stack1.empty() != true) {
stack2.push(stack1.top());
stack1.pop();
}
}
num = stack2.top();
stack2.pop();
return num;
}
private:
stack<int> stack1;//作为第一个栈,插入时进入这里1 2
stack<int> stack2;
};