循環(huán)隊(duì)列
循環(huán)隊(duì)列就是將隊(duì)列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間,供隊(duì)列循環(huán)使用。在循環(huán)隊(duì)列結(jié)構(gòu)中,當(dāng)存儲空間的最后一個位置已被使用而再要進(jìn)入隊(duì)運(yùn)算時,只需要存儲空間的第一個位置空閑,便可將元素加入到第一個位置,即將存儲空間的第一個位置作為隊(duì)尾。?[1]??循環(huán)隊(duì)列可以更簡單防止偽溢出的發(fā)生,但隊(duì)列大小是固定的。
循環(huán)隊(duì)列的相關(guān)條件和公式:
1.隊(duì)空條件:
rear==front
2.隊(duì)滿條件:
(rear+1) %QueueSize==front,其中QueueSize為循環(huán)隊(duì)列的最大長度
3.計(jì)算隊(duì)列長度:
?。╮ear-front+QueueSize)%QueueSize
4.入隊(duì):
?。╮ear+1)%QueueSize
5.出隊(duì):
(front+1)%QueueSize
例如
一共10個元素 M=10
先入隊(duì)9個元素,隊(duì)頭指向最后一個 即9
然后 出隊(duì)5個元素,隊(duì)尾指向5
再入隊(duì)三個元素, 隊(duì)頭指向2
這是隊(duì)內(nèi)實(shí)際個數(shù)為(2-5+10)%10 = 7個
至于為什么要加上%
是因?yàn)?當(dāng)F=9 R=5的時候 (9-5+10)=14 14%10才是正確結(jié)果4
標(biāo)簽: