/*
* 五、資料結構基礎之迴圈佇列
* 迴圈佇列資料結構:
* 由於入隊和出隊操作中,頭指標和尾指標只會增加,導致假上溢而不能有效地利用佇列空間
* 將佇列空間想象為乙個首尾相連的圓環,以此來克服順序佇列的假上溢現象
* --- 2023年4月28日 ---by lee
*/ #ifndef _circular_queue_h
#define _circular_queue_h
#include "utility.h"
//巨集定義迴圈佇列的空間大小
#define queuesize 20
//元素型別定義
typedef int datatype;
//迴圈佇列結構的定義
typedef struct _circularqueue
circularqueue;
//對迴圈佇列(順序佇列)的基本操作
void initqueue(circularqueue* queue);//初始化,構造空隊
int isqueueempty(circularqueue* queue);//判斷隊是否為空
int isqueuefull(circularqueue* queue);//判斷隊是否為滿,僅針對順序佇列
void enqueue(circularqueue* queue, datatype x);//元素x入隊
datatype dequeue(circularqueue* queue);//出隊,返回隊首元素
datatype queuefront(circularqueue* queue);//取隊首元素
//初始化,構造空隊
void initqueue(circularqueue* queue)
//隊列為空和滿時,front都等於rear;判斷佇列是否為空或者為滿:
//1、使用計數器count
//2、少用乙個元素的空間,約定佇列滿時:(rear+1)%queuesize=front
//rear指向隊尾元素的下乙個位置,始終為空;佇列的長度為(rear-front+queuesize)%queuesize
//判斷隊是否為空
int isqueueempty(circularqueue* queue)
//判斷隊是否為滿
int isqueuefull(circularqueue* queue)
//元素x入隊
void enqueue(circularqueue* queue, datatype x)
//出隊,返回隊首元素
datatype dequeue(circularqueue* queue)
//取隊首元素
datatype queuefront(circularqueue* queue)
#endif
//測試**
/* circularqueue q;
initqueue(&q);
enqueue(&q,1);
enqueue(&q,2);
printf("queue front: %d\n",dequeue(&q));
printf("queue front: %d\n",dequeue(&q));
enqueue(&q,1);
enqueue(&q,2);
printf("queue length: %d\n",q.count);
*/
資料結構之迴圈佇列(C語言實現)
具體程式實現如下 快取佇列長度 define cirqueue len 200 typedef unsigned char u8 typedef struct cirqueue 迴圈佇列 static cirqueue cirqueue 迴圈佇列初始化 void cqinit void 檢查佇列是否...
資料結構 C語言實現迴圈佇列
迴圈佇列可以理解為乙個環,實際上是將乙個普通佇列的尾部連上頭部構成的,所以在實現迴圈佇列時,需要兩個指標front和rear分別指示佇列頭元素及佇列尾元素的位置。在初始化建空佇列時可以令front rear 0,這樣當插入新元素時,尾指標rear加1表示向後移動一位,同理,當刪除佇列頭元素時,頭指標...
資料結構C語言實現 迴圈佇列
如下 include includetypedef char elemtype define maxqueue 100 typedef struct cyclequeue 建立乙個迴圈佇列 void initqueue cyclequeue q q front q rear 0 初始換隊首隊尾位置為...