package cn.dzp.flyroc.offer; import java.util.Stack; public class PushAndPopDemo { /*題目描述:用兩個棧來實現一個隊列,完成隊列的Push和pop操做。 隊列中的元素爲int類型*/ /*思路:一個棧壓入元素,而另外一個棧做爲緩衝, 將棧1的元素出棧後壓入棧2中,也能夠將棧一中的最後一個元素直接出棧 而不用再壓入棧2中再出棧*/ static Stack<Integer> stack1 = new Stack<>(); static Stack<Integer> stack2 = new Stack<>(); public static void push(int node){ System.out.println("這是第"+node+"個push的元素:"+stack1.push(node)); //將元素壓入stack1中 } public static int pop() { if (stack1.isEmpty() && stack2.isEmpty()){ //判斷stack1和stack2是否爲空 System.out.println("棧爲空!"); } if (stack2.isEmpty()){ //判斷stack2是否爲空 while (!stack1.isEmpty()){ stack2.push(stack1.pop()); //將stack1中彈出的元素壓入stack2中,直到stack1爲空 } } System.out.println("這是pop第一個元素:"+stack2.pop()); return stack2.pop(); } public static void main(String[] args){ push(1); push(2); push(3); pop(); } }