题目要求:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
分析:
1、队列、栈、链表
三者之间的关系可以参考如下博文:
https://blog.csdn.net/lin1214000999/article/details/104877351:
突然想写关于链表的相关操作:
相关知识参考博文:
https://blog.csdn.net/dangzhangjing97/article/details/81477192
2、特性:
列表:先进先出(超市柜台排队付款)
栈:先进后出(弹匣里的子弹)
3、原则:
push操作就直接往stack1中push, pop操作需要分类一下:如果stack2为空,那么需要将stack1中的数据转移到stack2中,然后在对stack2进行pop,如果stack2不为空,直接pop就ok。
摘自牛客网答案
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if (stack2.empty()) {
while (!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
}
int ret = stack2.top();
stack2.pop();
return ret;
}
private:
stack<int> stack1;
stack<int> stack2;
};