佇列(單鏈佇列和迴圈佇列)

2022-07-18 06:42:13 字數 1368 閱讀 3822

和線性表類似,佇列也有兩種儲存表示:

鏈佇列:為操作方便,給鏈佇列新增乙個頭結點

佇列的鏈式儲存結構:

typedef struct

qnodeqnode, *queueptr;

typedef

struct

linkqueue;

1 #include2 #include3 #include4 typedef struct

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 }

迴圈佇列:附設兩個指標front和rear分別指示佇列頭元素及尾元素的位置,每當插入新的隊尾元素是,尾指標加1;每當刪除佇列頭元素是,頭指標加1             如果用迴圈佇列,則必須設定乙個最大佇列長度;若無法確定最大長度,則宜採用鏈佇列。

迴圈佇列型別:

typedef struct

sqqueue;

#include#include

typedef

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 對於空間上來說,迴圈佇列必須有乙個固定的長度...