我需要一個類似deque的數據結構,我認爲它被稱爲循環緩衝區。Java中的循環緩衝區?
這就是我所做的。
public class MyStack {
byte[][] orders = { {0, 1, 2, 3}, {1, 2, 3, 0}, {2, 3, 0, 1}, {3, 0, 1, 2} };
byte state = 0;
int[] data = {1, 2, 3, 4};
void swap(int value){
data[state] = value;
if(state == 3){
state = 0;
}else{
state ++;
}
}
int[] dump(){
int[] output = {
data[ orders[state][0] ],
data[ orders[state][1] ],
data[ orders[state][2] ],
data[ orders[state][3] ],
};
return output;
}
}
這裏的輸出正是我需要的功能類型。它基本上是一個長度爲四的窗口,通過一個無限的離散空間或沿着一條數字線移動。
我的問題是:這個解決方案是否高效?是否有爲此功能而設計的內置庫?如果是這樣,是否值得使用?
沒有'push'或'pop'操作 - 這是如何實現堆棧ADT?如果你的數據結構不打算像堆棧那樣工作,那麼你就會把它弄糊塗,否則你會迷惑人。 – Joni
我不確定一個堆棧的手動實現如何與內置的實現(經過深入審查)相比較。我確實認爲真正的問題是你遇到了哪些性能/使用問題?如果實現一個堆棧不是你的目標 - 我相信這是不值得的不使用現有的庫的開銷。 –
@Joni推送和彈出都在交換中同時完成。 – bigcodeszzer