用两个栈来实现一个队列,完成队列的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;};新闻热点
疑难解答