這個是一個很常見的算法,在劍指offer中有詳細的講解,在這裏提供一種優化的實現。該實現的優勢是不須要每次在數據出列時,將數據copy到另外一個堆棧中。並寫了其對應的單元測試。java
主要實現是在類中定義了兩個全局變量,標明當前隊列中兩個棧的狀態,git
在向對列中添加順序時,若是inOrder = false 則能夠直接添加,不然就要將數據導到另外一個棧中,而後將數據添加到有數據的棧中。在從隊列中移除數據時,若是inOrder=true 則存儲數據的棧直接將數據彈出便可,不然將數據導入到另外一個棧再將數據彈出。github
PS:代碼在超連接中。算法