具體程式實現如下:
/**
* 快取佇列長度
*/#define cirqueue_len 200
typedef
unsigned
char u8;
typedef
struct
cirqueue;
// 迴圈佇列
static cirqueue cirqueue;
/** * 迴圈佇列初始化
*/void
cqinit
(void
)/**
* 檢查佇列是否已滿
*/void
checkfull
(void
)else
}/**
* 檢查佇列長度
*/void
checklen
(void
) cirqueue.waitreadlen =
(cirqueue.pread <= cirqueue.pwrite)
?(u8)
(cirqueue.pwrite - cirqueue.pread)
:(u8)
(cirqueue.pread - cirqueue.pwrite + cirqueue_len);}
/** * * 讀取迴圈佇列
* @param rbyte 讀取的位元組
* @return 1:讀取成功 0:讀取失敗
*/int
cqread
(u8 *rbyte)
*rbyte =
*cirqueue.pread++
; cirqueue.writefull =0;
if(cirqueue.pread >
(cirqueue.buf + cirqueue_len -1)
)return1;
}/**
* 寫入迴圈佇列
* @param wbyte [description]
* @return 1:寫入成功 0:寫入失敗
*/int
cqwrite
(u8 *wbyte)
*cirqueue.pwrite++
=*wbyte;
if(cirqueue.pwrite >
(cirqueue.buf + cirqueue_len -1)
)return1;
}
資料結構 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 初始換隊首隊尾位置為...
資料結構基礎之迴圈佇列C語言實現
五 資料結構基礎之迴圈佇列 迴圈佇列資料結構 由於入隊和出隊操作中,頭指標和尾指標只會增加,導致假上溢而不能有效地利用佇列空間 將佇列空間想象為乙個首尾相連的圓環,以此來克服順序佇列的假上溢現象 2012年4月28日 by lee ifndef circular queue h define cir...