迴圈佇列也是佇列的順序儲存結構,只是在原先的佇列的基礎上進行的優化,我在寫的時候出現了一些問題,但是我搜尋的部落格中都沒有提到這個問題,
首先: front是指向佇列的第乙個元素,rear是指向隊尾的下乙個元素,maxsize是佇列的最大容量(首先我賣個關子,這裡maxsize的描述是錯的)
佇列滿條件:(front+1)%maxsize=rear;
隊列為空條件: front=rear;
佇列的長度:(rear-front+maxsize)%maxsize;
但是按照我們自己的邏輯的時,佇列滿的條件是 :front=rear; 和老師的上述不同,在這個地方困擾了我很久,後來才知道:maxsize=佇列的容量+1,佇列會犧牲乙個空間,當佇列滿了,隊頭指標在隊尾指標的下乙個位置。搞懂了這個下面就比較容易了。
所有的**如下:
#include#include#define maxsize 6 //
佇列的最大長度+1,陣列的其中乙個元素空著。
typedef
intelemtype;
typedef
struct
queuequeue;
//初始化迴圈佇列
void initqueue(queue *q)
//入佇列
void push(queue *q,elemtype e)
else}//
出佇列elemtype pop(queue *q,elemtype *e)
else}//
銷毀佇列
void destroyqueue(queue *q)
//列印佇列
void
printfqueue(queue q)
printf("\n
");}int
main()
printf(
"你的指令為:");
scanf("%d
",&number);
}return0;
}
資料結構 迴圈佇列 C語言
2 迴圈佇列源 及測試 佇列,顧名思義就像我們平時排隊打飯一樣,隊尾有人不斷來排隊打飯,隊頭不斷有人打完飯離開隊頭 順序佇列用順序儲存結構,即陣列儲存,分別包含倆個變數front和rear分別代表隊頭和隊尾,為了防止陣列越界溢位,我們將順序佇列變成乙個環狀的空間,即迴圈佇列,超出陣列界隊尾重新回到陣...
C語言資料結構之迴圈佇列
include define max 5 typedef struct queue queue initqueue queue q int isfull queue q else int isempty queue q else int insertelement queue q,int eleme...
另類迴圈佇列 資料結構 C語言
如果用乙個迴圈陣列表示佇列,並且只設佇列頭指標front,不設尾指標rear,而是另設count記錄佇列中元素個數。請編寫演算法實現佇列的入隊和出隊操作 bool addq queue q,elementtype x elementtype deleteq queue q 其中queue結構定義如下...