隊列 -- 循環隊列

實現隊列的方法有很多,比如鏈表,動態數組等,這裏主要介紹一下循環隊列,首先我們用靜態數組做個簡單的隊列:


從上圖很顯然可以看出,全部出隊後,將無法繼續入隊,這樣的情況也叫做“假溢出”,即使數組中,明明還有空間可以利用,但是卻無法使用。爲了解決這樣的問題,就引入了一個叫“循環隊列”這麼一個方法。那麼什麼叫循環隊列呢?
循環隊列定義:
爲了克服順序隊列中假溢出,通常將一維數組Queue[0]到Queue[MAXSIZE - 1]看成是一個首尾相連接的圓環,即Queue[0]與Queue[MAXSIZE - 1]相連接在一起,將這樣形式的隊列成爲循環隊列。

S1循環隊列示例圖:

S2循環隊列各個參數的含義:
1)隊列初始化
        front和rear的值都是零。
2)隊列非空
        front代表的是隊列的第一個元素。
        rear代表的是隊列的最後一個元素的下一個元素。
3)隊列空
        front和rear的值相等,不一定爲零。

S3循環隊列入隊的僞算法:
1)將值存入rear所代表的位置。
2)rear = (rear + 1) % 數組的長度。

S4循環隊列出隊的僞算法:
1)取出front所代表位置的值。
2)front = (front + 1) % 數組長度。

S5如何判斷循環隊列爲空:
1)如果front與rear的值相等,那麼該循環隊列爲空隊列。

S6如何判斷循環隊列已滿:
1)通常使用兩種方式
1.多增加一個標識參數。
2.如果 (rear + 1) % 數組長度 == front 那麼,已滿。

S7循環隊列部分代碼








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章