和線性表類似,佇列也有兩種儲存表示:
鏈佇列:為操作方便,給鏈佇列新增乙個頭結點
佇列的鏈式儲存結構:
typedef structqnodeqnode, *queueptr;
typedef
struct
linkqueue;
1 #include2 #include3 #include4 typedef struct迴圈佇列:附設兩個指標front和rear分別指示佇列頭元素及尾元素的位置,每當插入新的隊尾元素是,尾指標加1;每當刪除佇列頭元素是,頭指標加1 如果用迴圈佇列,則必須設定乙個最大佇列長度;若無法確定最大長度,則宜採用鏈佇列。qnodeqnode, *queueptr;
8 typedef struct
linkqueue;
1213
void initqueue(linkqueue &q)//
初始化佇列
18void destroy(linkqueue &q)
24 }//
銷毀佇列
25void enter(linkqueue &q,int
value)
32void dequeue(linkqueue &q,int &value) //
出佇列41
//佇列元素個數
42void getlength (linkqueue q,int &length)49}
50int
main()
60while(q.rear!=q.front)
63destroy(q);
64 }
迴圈佇列型別:
typedef structsqqueue;
#include#includetypedef
struct
sqqueue;
void initqueue(sqqueue &q)
void enqueue(sqqueue &q,int
elem)
void outqueue(sqqueue &q,int &e)
void
printqueue(sqqueue q)
intmain()
printqueue(q);
printf(
"\noutput:
"); //
輸入要輸出佇列的個數
scanf("
%d",&i);
while(i!=0
) printqueue(q);
}
佇列(迴圈佇列 鏈佇列)
迴圈佇列 cirqueue.h 名稱 迴圈佇列 基於陣列 templateclass cirqueue q size 1 多申請乙個位置,保證隊滿 對空容易判定!cirqueue void enter datatype data 入隊操作 datatype shift 出隊操作 datatype g...
實驗四 順序佇列(迴圈佇列)和鏈佇列
1.迴圈佇列 ifndef cirqueue h define cirqueue h const int queuesize 100 定義儲存佇列元素的陣列的最大長度 template 定義模板類cirqueue class cirqueue endif include cirqueue.h tem...
佇列 迴圈佇列與鏈佇列比較
對於迴圈佇列與鏈佇列的比較,可以從兩方面來考慮 1 從時間上,其實它們的基本操作都是常數時間,即都為0 1 的,不過迴圈佇列是事先申請好空間,使用期間不釋放,而對於鏈佇列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則兩者還是有細微差異。2 對於空間上來說,迴圈佇列必須有乙個固定的長度...