通過棧(LIFO)實現FIFO
阿新 • • 發佈:2018-12-17
今天偶然看到朋友分享的一個文章,裡面提到一個問題。就是如何通過棧實現佇列的先進先出特性?
棧是一個後進先出的資料結構,而棧是一個先進先出的資料結構。
若要達到先進先出的效果,顯然一個棧是不夠用的。
將一個棧裡的內容,依次取出,然後放入另一個棧裡,此時棧裡的元素順序會發生倒序。
程式碼如下:
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;
}
}
很簡單但是很有趣