用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
思路:
①将一行数1,2,3,4,5 入s1栈,然后再将栈s1中的数据入s2栈,得到顺序。
②但如果取栈中某一个元素,然后继续压栈.如:压入1,2,3。然后1出栈,再压入4,5, 然后2出栈。情况如下图。
③本题还有一个坑就是要进行异常处理,当两个栈都没有元素,此时如果执行出栈操作,将会抛出异常。
代码如下所示:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int num = 0;
while (!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
if (stack2.empty()) {
throw;
}
else {
num = stack2.top();
stack2.pop();
}
while (!stack2.empty()) {
stack1.push(stack2.top());
stack2.pop();
}
return num;
}
private:
stack<int> stack1;
stack<int> stack2;
};