我正在實施一個隊列使用圓形陣列,我有點卡在resize()
方法實現(當數組已滿)。使用循環數組的隊列實現:調整循環數組的大小的最佳方法是?
在enqueue()
方法裏面我檢查數組的大小是否等於它的長度,如果數組已滿,現在,我試圖調整數組的大小,而不是拋出異常。
的事情是,我有兩個問題需要注意
- 前< =後
- 後<前
這是複製的元素舊的的最好的方法陣列到新的,更大的?
我認爲它使用一個for循環,如:
newArray = new Array[oldArray.length*2];
if (front <= rear) {
for (int i = front; i < rear; i++) {
newArray[i] = oldArray[i];
}
} else {
for (int i = front; i < newArray.length; i++) {
newArray[i] = oldArray[i];
}
for (int j = rear; j < front; j++) {
// i'm using the variable i, the order is maintained
newArray[i] = oldArray[j];
i++;
}
}
然後oldArray
= newArray
,返回newArray
它完成
調整大小我不知道爲氏使用量做到這一點,恐怕我失去了價值。
有人可以告訴我是否有更好的方法來做到這一點?
Thx u too!現在更清晰:) – vKmC 2011-04-17 18:00:12