/* 用两个栈实现队列: 要做到先进先出,stack2作为辅助栈: 把第一个栈中的元素按照先进后出顺序取出放入第二个栈中,再从第二个栈中弹出来,如此便做到了先进先出; 再将弹出完毕的stack2中剩余元素放回stack1; **/ import java.util.Stack; class QueneWithTwoStacks { public static Stack<Integer> stack1 = new Stack<Integer>(); public static Stack<Integer> stack2 = new Stack<Integer>(); public static void push(int node) { stack1.push(node); } public static int pop() { //将stack1中元素移到stack2,元素顺序将随之反转 while (!stack1.empty()) { stack2.push(stack1.pop()); } //弹出stack2栈顶元素 int a=stack2.pop(); //将弹出元素后的stack2元素移回stack1 while (!stack2.empty()) { stack1.push(stack2.pop()); } return a; } //剑指offer思路 public static int pop2() { if (stack2.empty())//stack2为空时将stack1中元素移到stack2,若stack2不为空则直接弹出stack2中的栈顶 { //将stack1中元素移到stack2,元素顺序将随之反转 while (!stack1.empty()) { stack2.push(stack1.pop()); } } return stack2.pop(); } public static void main(String[] args) { push(1); push(2); push(3); System.out.println(pop2()); System.out.println(pop2()); push(4); System.out.println(pop2()); push(5); System.out.println(pop2()); System.out.println(pop2()); } }
剑指offer_用两个栈实现队列
最新推荐文章于 2020-08-06 16:29:09 发布