佇列的實現

2021-07-08 13:54:32 字數 1818 閱讀 1566

一、迴圈佇列—佇列的順序表示和實現

/*順序佇列的型別定義*/

#define maxqsize 100 /*最大佇列長度*/

#define ok 1;

#define error 0;

typedef struct 

sqqueue;

建立空佇列時,令front=rear=0,每當插入新的隊尾元素時,尾指標rear增1,每當刪除隊頭元素時,頭指標front增1。因此,在非空佇列中,頭指標始終指向佇列頭元素,

而尾指標始終指向隊尾元素的下乙個位置。

這樣會造成"假溢位",這是由「隊尾入隊,隊頭出隊」,這種受限制的操作造成的,解決方法是構造迴圈佇列

對於迴圈佇列不能以頭、尾指標的值是否相同來判別佇列空間是「滿」還是「空」,因為隊空和隊滿都是q.front=q.rear,那該如何區別隊滿還是隊空?

1)少用乙個元素空間,即佇列空間大小為m時,有m-1個元素就任務是隊滿。這樣判斷隊空的條件不變,即當頭、尾指標的值相同時就認為隊空;

而當尾指標在迴圈意義上加1後等於頭指標,則認為隊滿。因此

隊空的條件:q.front == q.rear

隊滿的條件:(q.rear+1)%maxqsize == q.front

2)另設乙個標誌位以區別佇列是「空」還是「滿」。

[**實現]

1.初始化

int initqueue(sqqueue &q)

2.求佇列長度

int queuelength(sqqueue q)

3.入隊

int enqueue(sqqueue &q,int e)

4.出隊

int dequeue(sqqueue &q,int &e)

二、鏈隊—佇列的鏈式表示和實現/*鏈隊型別的定義*/typedef struct qnode

[**實現]

1.初始化

int initqueue(linkqueue &q)

2.入隊

int enqueue(linkqueue &q,int e)

3.出隊

int dequeue(linkqueue &q,int &e)

佇列實現 佇列的鏈式結構實現

佇列的實現,用單鏈表實現佇列的結構 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...