【劍指offer】棧——棧實現隊列

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();
    }
}
相關文章
相關標籤/搜索