資料結構之迴圈佇列(C語言實現)

2021-10-20 22:43:25 字數 1246 閱讀 2265

具體程式實現如下:

/**

* 快取佇列長度

*/#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...