關於佇列的複習總結

2021-08-16 13:16:48 字數 1914 閱讀 2240

佇列採用陣列儲存,且含有資料(任意型別),隊頭和隊尾指標(int),所以採用結構體描述。

#define maxsize 10;//佇列中元素的最大個數

typedef char elemtype;//元素型別

a.初始化

void initqueue(sqqueue &q)
b.判空
bool isempty(sqqueue q)
c.入隊
bool enqueue(sqqueue &q,elemtype x)
d.出隊
bool dequeue(sqqueue &q,elemtype &x)
note:

(1)初始時,rear=front=0;

(2)隊空條件:rear=front;

(3)隊滿條件:(rear+1)%maxsize=front;

這種情況下,迴圈佇列中有乙個空單元,rear正指向它,front指向它的下乙個單元;

(4)佇列長度:(rear-front+maxsize)%maxsize;

(5)佇列中最多有n-1個元素;

(6)以上這些情況均為:front指向隊頭元素,rear指向隊尾元素的下乙個元素。

front指向鏈首結點(一般為頭節點),rear指向鏈尾結點。

鏈隊包含各個結點(包括資料域和下乙個指標域)和頭尾指標,而頭尾指標型別是結點型別。因此採用結構體定義鏈隊,先定義結點。

typedef struct linknode linknode;//結點定義

typedef structlinkqueue;//鏈隊定義

tips:以下討論關於鏈隊的操作均建立在鏈隊有頭節點的基礎上。

a.初始化
void initqueue(linkqueue &q)

b.判隊空
bool isempty(linkqueue q)

c.入隊
void enqueue(linkqueue &q,elemtype x)

d.出隊
bool dequeue(linkqueue &q,elemtype &x)

note:

(1)初始時,rear=front=新節點;

(2)由於是鏈隊,入隊時不需判斷佇列是否已滿;

(3)出隊時需要判斷佇列是否為空,當刪除的結點是鏈隊尾結點時,需要修改尾指標。

允許兩端都可以進行入隊和出隊操作的佇列。

關於佇列的其它遺留問題見:

佇列的複習

恩,順便說一下佇列吧,佇列與棧相比,是一種先進先出的資料結構,類似一頭進一頭出的資料結構,允許插入的隊尾,刪除元素叫出隊,出隊一般在隊頭實現,一般對作業系統中的處理訊息的訊息佇列,就是對佇列的典型操作,乙個訊息接乙個訊息就盡心排隊,處理時出隊,觸發時入隊,ok 下面我將對佇列進行定義 首先是單鏈表形...

單調佇列複習

1.適用情況 需要快速求出區間最大 最小值的情況 常用於dp優化 有單調的題 2.原理 思路 每次有元素進隊時,找到合適的隊尾接上,保證佇列單調性。刪除後面不必要的一段 同時,維護可用區間,及時去頭。3.性質 一般,在動態規劃的過程中,單調佇列中每個元素一般儲存的是兩個值 1.在原數列中的位置 下標...

資料結構複習總結 棧和佇列

二 佇列 一般設初值為top1 1 棧空 top2 n 棧空 當且僅當top2 top1 1時共享棧滿 即兩個棧頂指標相鄰 設計演算法判斷單鏈表 字元型data域 的全部n個字元是否中心對稱。ex xyx,xyyx 思路 利用棧的先進後出的特點,將鍊錶前一半元素依次進棧,然後將棧中元素出棧,與鍊錶的...