1. 程式人生 > >通過棧(LIFO)實現FIFO

通過棧(LIFO)實現FIFO

今天偶然看到朋友分享的一個文章,裡面提到一個問題。就是如何通過棧實現佇列的先進先出特性

棧是一個後進先出的資料結構,而棧是一個先進先出的資料結構。
若要達到先進先出的效果,顯然一個棧是不夠用的。
將一個棧裡的內容,依次取出,然後放入另一個棧裡,此時棧裡的元素順序會發生倒序。

程式碼如下:

public class Q<T>{
        Stack<T> in = new Stack<>();
        Stack<T> out = new Stack<>();

        void push(T t){
            in.
push(t); } T pop(){ if(out.empty()){ inToOut(); } return out.pop(); } void inToOut(){ while(!in.empty()){ out.push(in.pop()); } } boolean empty(){ return
in.size()+out.size() < 1; } }

很簡單但是很有趣