佇列 迴圈佇列與鏈隊

2021-09-24 23:50:08 字數 2756 閱讀 5993

2.鏈隊

注意:佇列也是線性表,其特殊性在於有特殊的運算規則。即:隊結構只能在一端進行插入,該操作端稱為隊尾,另一端刪除元素,該操作端稱為隊頭。按照「先進先出」(first in first out,fifo)原則處理資料節點。

之所以用迴圈對列,就是了為了提高利用率。要不然每刪除乙個元素,對頭就空了乙個還用不了了。

實現迴圈,就用「模」運算:

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

堆滿條件:(q.rear+1)%max == q.front

typedef int elemtype;

typedef structsqqueue;

void sqqueueinit(sqqueue &q)
bool sqqueueempty(sqqueue q)

else return false;

}

bool sqqueuefull(sqqueue q)

else return false;

}

回到目錄

sqqueue sqqueuein(sqqueue q,elemtype x)sqqueue;

void sqqueueinit(sqqueue &q)

bool sqqueueempty(sqqueue q)

else return false;

}bool sqqueuefull(sqqueue q)

else return false;

}sqqueue sqqueuein(sqqueue q,elemtype x)

sqqueue s;

sqqueueinit(s);

cout<

回到目錄

typedef int datatype;

typedef struct qnode //定義節點

qnode,*queue;

typedef struct //定義乙個鏈隊

linkqueue;

void init(linkqueue &q)

bool sqqueueempty(sqqueue q)

else return false;

}

bool isempty(linkqueue q)

回到目錄

void enqueue(linkqueue &q,datatype a)	//入隊 

}

注意:當佇列中最後乙個元素被刪時,佇列尾指標也丟失了,因此需要對隊尾指標從新賦值。

void dequeue(linkqueue &q,datatype &a)	//出隊 

}

datatype getfront(linkqueue q)

}

int length(linkqueue q)

回到目錄

#includeusing namespace std;

typedef int datatype;

typedef struct qnode //定義節點

qnode,*queue;

typedef struct //定義乙個鏈隊

linkqueue;

void init(linkqueue &q); //初始化

bool isempty(linkqueue q); //判斷是否為空

void enqueue(linkqueue &q,datatype a); //入隊

void dequeue(linkqueue &q,datatype &a); //出棧

datatype getfront(linkqueue q); //訪問隊頭

int length(linkqueue q); //計算佇列長度(元素個數)

void init(linkqueue &q)

bool isempty(linkqueue q)

void enqueue(linkqueue &q,datatype a) //入隊

}void dequeue(linkqueue &q,datatype &a) //出隊

注意乙個小細節:在進行某些操作時,不管是棧還是佇列還是其他,需要注意函式是設為void型還是有返回型別。如果是void,要想要改變引數,需要用 * 或 ***&***,如果有返回就不需要了。

回到目錄

佇列 迴圈佇列與鏈佇列比較

對於迴圈佇列與鏈佇列的比較,可以從兩方面來考慮 1 從時間上,其實它們的基本操作都是常數時間,即都為0 1 的,不過迴圈佇列是事先申請好空間,使用期間不釋放,而對於鏈佇列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則兩者還是有細微差異。2 對於空間上來說,迴圈佇列必須有乙個固定的長度...

09 迴圈佇列與鏈佇列

一 佇列與迴圈佇列 嵌入式 小j的天空 1.佇列 1 佇列 queue 是只允許在一端進行插入操作 而在另一端進行 刪除操作 的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作...

09 迴圈佇列與鏈佇列

一 佇列與迴圈佇列1.佇列 1 佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作,其實就是在隊尾追加乙個元...