题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
总思路:
1.使用两个栈模拟队列(stack1, stack2)。
2.入队列:直接压入stack1。
3.出队列:判断stack2是否为空?
不为空:弹出stack2栈顶元素。
为空:将stack1中的元素依次弹出,依次压入stack2,直到stack1为空,然后弹出stack2栈顶元素。
知识点(对于我):
1.查阅C++用户手册。
https://zh.cppreference.com/w/cpp/container/stack
AC代码:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int result;
if(!stack2.empty()){
result = stack2.top();
stack2.pop();
return result;
}
else{
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
if(!stack2.empty()){
result = stack2.top();
stack2.pop();
return result;
}
else{//如果将stack1中的元素压入stack2后,stack2仍为空则报错
throw "Queue Is Empty";
}
}
}
private:
stack<int> stack1;
stack<int> stack2;
};