一開始使用陣列來表示佇列,但是會造成很多的資料搬移,效率太低,所以考慮使用迴圈佇列。迴圈佇列的約定如下:
如下圖所示:
/*因為普通陣列來實現佇列,需要涉及到很多資料搬移,所以使用迴圈佇列
*而對於迴圈佇列,在分辨其滿和空時,會有一些困難。
*可以採用兩種方法
*1、增加乙個成員變數,來表明其滿或者空
*2、空出乙個陣列成員,用來判別
*/typedef struct sqqueue;
void createqueue(sqqueue **p);
void inqueue(sqqueue *p, int value);
void outqueue(sqqueue *p);
int isempty(sqqueue *p);
int isfull(sqqueue *p);
void printqueue(sqqueue *p);
為什麼這個函式要單獨拿出來?void main()
void createqueue(sqqueue **p)
void inqueue(sqqueue *p, int value)
void outqueue(sqqueue *p)
int isfull(sqqueue *p)
int isempty(sqqueue *p)
因為在編寫該函式的時候,我曾多次的出現各種問題。
佇列實現 佇列的鏈式結構實現
佇列的實現,用單鏈表實現佇列的結構 1 初始化建立佇列 2 釋放佇列 3 清空佇列 4 計算佇列長度 5 判斷佇列是否為空 6 列印佇列元素 7 入隊操作 隊尾插入 8 出隊操作 隊首刪除 include typedef int datatype struct qnode struct lqueue...
佇列的實現(一)順序佇列的實現
佇列 只能一端進行出棧一端進行進棧。隊首 只允許進行出棧操作,可以進行刪除。隊尾 只允許進行入棧操作,可以進行插入。隊尾進,隊尾出,先進先出。所以佇列的實現也有兩種形式,一種是陣列實現佇列,一種是用鍊錶實現佇列。首先是用陣列來實現佇列。使用陣列佇列,因為在刪除時front會越來越大,所以最後會出現一...
佇列 迴圈佇列的實現
為了可以重新利用佇列底層陣列中已刪除元素所佔的空間,消除可能出現的 假滿 現象,將順序佇列改進為迴圈佇列。迴圈佇列是首尾相連的佇列 當front rear變數達到底層陣列的capacity 1之後,再向前以為就變成0.入隊 1 判斷佇列是否已滿,已滿丟擲越界異常 2 不滿的話把元素查到隊尾,並且re...