本题思路很简单:知道栈是先进后出,队列是先进先出。就可以利用两个栈实现队列
in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in
栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序
再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这
就是队列的顺序。
代码如下:
publicclasssolution{
Stack<Integer> in =newStack<Integer>();
Stack<Integer> out =newStack<Integer>();publicvoidpush(node){
in.push(node);}publicintpop()throws Exception{if(out.isEmpty())while(!in.isEmpty())
out.push(in.pop());if(out.isEmpty)thrownewException("queue is Empty");//可以不需要return out.pop();}
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 本题思路很简单:知道栈是先进后出,队列是先进先出。就可以利用两个栈实现队列 in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序 再一次被反转,因此出栈顺序就和最开始入栈顺序...