我們來看下上次我們寫下的queue
:
struct queue //增加乙個
void pop() //彈出第乙個
bool empty() //是否為空
int num() //返回有多少個元素
int gethead() //獲取第乙個元素
};
現在我們增加乙個功能,獲取第i個元素。
int getnum(int x)
好的,開始在裡邊填充東西:
int getnum(int x)
但顯然,如果你的x
比較大的話,你會輸出什麼?
那就想個辦法,我們可以給他來個迴圈佇列,也就是說,如果你的x
太大了,我們就把他重新歸到head
,再來確定元素,就像這樣:
那就開始吧!
int getnum(int x)
但是,如果這個佇列是空的話,head-tail
是0的話,會有error
,我們再加乙個特判:
int getnum(int x)
如果隊列為空,返回乙個-1
。順便咱把gethead()
也重寫一下:
int gethead()
好的,迴圈佇列就實現啦~ 佇列 迴圈佇列
迴圈佇列是乙個大小確定的特殊佇列,它的特殊體現在迴圈,之前提到的普通佇列,我們是用鍊錶來實現的,在這裡,由於迴圈佇列是乙個長度確定的佇列,所以我們可以拿順序表來實現。迴圈佇列的操作與普通佇列類似,不過不同的地方在於當rear走到capacity 1並且front在0號元素位置的時候,當此時再有元素入...
佇列實現 順序結構2 迴圈佇列
問題解決迴圈佇列來解決.迴圈佇列來解決.使用乙個計數器count,初始化為0,入佇列加一,出佇列減一 當count queue size,則判斷佇列滿 利用乙個flag標記,true代表入佇列,false代表出佇列,初始化為false.當head tail,如果flag為true,則隊伍滿.浪費乙個...
佇列(迴圈佇列 鏈佇列)
迴圈佇列 cirqueue.h 名稱 迴圈佇列 基於陣列 templateclass cirqueue q size 1 多申請乙個位置,保證隊滿 對空容易判定!cirqueue void enter datatype data 入隊操作 datatype shift 出隊操作 datatype g...