資料結構迴圈佇列(c語言描述)

2022-06-24 16:21:14 字數 1087 閱讀 4011

迴圈佇列也是佇列的順序儲存結構,只是在原先的佇列的基礎上進行的優化,我在寫的時候出現了一些問題,但是我搜尋的部落格中都沒有提到這個問題,

首先: 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結構定義如下...