用陣列實現迴圈佇列(新思路)

2022-09-19 16:30:16 字數 1181 閱讀 4700

用陣列實現乙個迴圈佇列,難點就在於如何判斷陣列是否滿了,不論是書上的方法,還是一些大佬的寫法,都是利用乙個計算去判斷:(rear + maxsize - front) % maxsize

有的小夥伴天資聰穎一下就理解了,有的小夥伴可能理解不夠深刻,只能牢牢記住這個公式

在這裡我給大夥分享一種思路:

其實上面的思路的本質就是:判斷尾指標是否追上了頭指標,很多小夥伴可能就在你追我,我追你的過程中就懵逼了

其實我們完全可以忽略這個過程,我們只需要定義乙個變數sizeadd()乙個元素我就size++poll()乙個元素我就size--,只要size是小於佇列的最大長度,就說明是可以add()的。

具體可以看下**:

public class ringqueue 

public void add(int value)

arr[putindex] = value;

size++;

// 計算下乙個放入元素的位置

putindex = nextindex(putindex);

}public int poll()

int ans = arr[pollindex];

size--;

// 計算下乙個 poll 元素的位置

pollindex = nextindex(pollindex);

return ans;

}/**

* 計算下乙個 put,poll 元素的位置

* 如果當前元素所在的位置還沒到陣列的最後乙個位置,那就 i++

* 如果當前元素所在的位置已經是陣列的最後乙個位置了,那下乙個位置就是陣列的開頭 0

* @param i 當前元素的位置

* @return

*/public int nextindex(int i)

}public static void main(string args)

}

如果說在做演算法題的過程中,需要自己實現資料結構,通常我們可以定義一些額外的變數來簡化我們的某些操作

佇列 陣列實現 迴圈佇列

1 陣列佇列.cpp 定義控制台應用程式的入口點。2 3 include4 include5 include abs 6 include7 include8 using namespace std 9 10 定義乙個佇列的結構體11 struct myqueue12 17 18 規則說明 19 nh...

用陣列設計迴圈佇列

設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...

陣列實現迴圈佇列

1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...