迴圈佇列可以理解為乙個環,實際上是將乙個普通佇列的尾部連上頭部構成的,所以在實現迴圈佇列時,需要兩個指標front和rear分別指示佇列頭元素及佇列尾元素的位置。
在初始化建空佇列時可以令front=rear=0,這樣當插入新元素時,尾指標rear加1表示向後移動一位,同理,當刪除佇列頭元素時,頭指標front加1表示佇列頭部乙個元素出佇列,下乙個元素成隊首。這樣,front始終指向隊頭元素,rear始終指向隊尾元素的下一位。
假設乙個空佇列空間為10,如果存入10個資料,那麼此時佇列就會滿,但此時會發現front=rear,因為rear指向隊尾元素的下一位,此時隊尾元素的下一位恰好為隊首元素。此時會出現乙個問題,剛開始是說當front==rear時,隊列為空佇列,佇列滿時也滿足front=rear。
#include
"stdio.h"
#include
"stdlib.h"
#define maxqsize 100
//最大佇列長度
typedef
int qelemtype;
typedef
struct
sqqueue;
intinitqueue
(sqqueue *q)
//返回佇列q的元素個數
intqueuelength
(sqqueue q)
//向q隊尾插入元素
intenqueue
(sqqueue *q,qelemtype e)
//刪除q的隊首元素,用e返回其值
intdequeue
(sqqueue *q,qelemtype *e)
intmain()
資料結構C語言實現 迴圈佇列
如下 include includetypedef char elemtype define maxqueue 100 typedef struct cyclequeue 建立乙個迴圈佇列 void initqueue cyclequeue q q front q rear 0 初始換隊首隊尾位置為...
資料結構之迴圈佇列(C語言實現)
具體程式實現如下 快取佇列長度 define cirqueue len 200 typedef unsigned char u8 typedef struct cirqueue 迴圈佇列 static cirqueue cirqueue 迴圈佇列初始化 void cqinit void 檢查佇列是否...
資料結構 佇列(C語言實現)
佇列 c語言實現 include include define queueisempty arg arg size 0 define queueisfull arg arg size arg capacity 判斷是否為空或為滿。巨集定義,函式調銷太大。佇列使用size和capacity顯式的判斷是...