迴圈佇列的最優實現(陣列實現)

2021-10-01 11:01:39 字數 1392 閱讀 4219

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...