1、原理:迴圈佇列就是將佇列儲存空間的最後乙個位置繞到第乙個位置,形成一種理解意義上的環結構,在迴圈佇列結構中,當儲存空間的最後乙個位置已被使用而再要進入隊運算時,只需要儲存空間的第乙個位置空閒,便可將元素加入到第乙個位置,即將儲存空間的第乙個位置作為隊尾。
2、迴圈佇列的實現:
首先。需要引入兩個指向,來標記隊首和隊尾
(start標記隊首,end標記隊尾)
接下來我們就往裡面新增元素(如下圖所示)
如果要實現迴圈佇列,當隊的最後乙個位置有元素,新增下個元素到隊首,此時隊首的位置必須的空出來才能迴圈起來:
然後依次迴圈下去。
在實現的過程中肯定會涉及到陣列的擴容以及縮減問題,下面我來解釋一下陣列何時需要擴容(縮減)以及如何擴容(縮減)。
以擴容為例:再迴圈過程中,出現end即將要覆蓋start的時候需要擴容(如下圖:)
縮減原理相同。接下來我們看**實現:
public
class
cilquedemo
arr = arrnew;
//採用陣列拷貝來擴充陣列
end = end - start;
start =0;
//指向陣列頭部}}
//刪除操作
public
void
del(
) system.out.
println
(arr[start % arr.length]);
start++
;//陣列縮減
if(end - start +
1< arr.length/4)
int[
] arrnew =
newint
[newlen]
;for
(int i=
0;i) arr = arrnew;
end = end - start;
start =0;}}}
佇列 陣列實現 迴圈佇列
1 陣列佇列.cpp 定義控制台應用程式的入口點。2 3 include4 include5 include abs 6 include7 include8 using namespace std 9 10 定義乙個佇列的結構體11 struct myqueue12 17 18 規則說明 19 nh...
陣列實現迴圈佇列
1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...
迴圈陣列實現佇列
佇列是先進先出 fifo 模式,從隊尾加入元素的操作叫入隊,從隊首刪除元素的操作叫出隊 設定兩個指標分別為front指向隊首,real指向隊尾。開始時front和real分別為 1。當有元素入隊時real 1 當有元素出隊時front 1.public class queuesimulation s...