棧和佇列 2

2021-10-01 05:16:37 字數 1530 閱讀 2683

佇列

佇列比棧稍微複雜一點,特別是順序儲存結構中,有乙個rear,乙個front,要把他倆連起來,挺麻煩的,還有假溢位問題,隊空隊滿的討論都是比較難的地方,需要仔細推敲。

一、基本知識

佇列:只允許在一端進行插入操作,而另一端進行刪除操作的線性表。

允許插入(也稱入隊、進隊)的一端稱為隊尾,允許刪除(也稱出隊)的一端稱為隊頭。

空佇列:不含任何資料元素的佇列。

假溢位:當元素被插入到陣列中下標最大的位置上之後,佇列的空間就用盡了,儘管此時陣列的低端還有空閒空間,這種現象叫做假溢位。

二、佇列的順序儲存結構及實現

假溢位

**求模:**

rear=(rear+1)% maxsize

front=(front+1)% mazsize

隊空:front==rear

隊滿的條件:(rear+1)% queuesize==front

迴圈佇列類的宣告

const int queuesize=100; 

template

class cirqueue;

private:

t data[queuesize];   

int front, rear;

};迴圈佇列的實現——入隊

template

void cirqueue::enqueue(t x)

迴圈佇列的實現——出隊

template

t cirqueue::dequeue( )

迴圈佇列的實現——讀隊頭元素

template

t cirqueue::getqueue( )

迴圈佇列的實現——佇列長度

template

int cirqueue::getlength( )

三、佇列的鏈結儲存結構及實現

鏈佇列類的宣告

template

class linkqueue

;鏈佇列的實現——建構函式

template

linkqueue::linkqueue( )

鏈佇列的實現——入隊

鏈佇列的實現——出隊

棧和佇列 2鏈棧

adrian 鏈棧元素入棧 例如,將元素 1 2 3 4 依次入棧,等價於將各元素採用頭插法依次新增到鍊錶中,每個資料元素的新增過程如圖 2 所示 鏈棧元素出棧 例如,圖 2e 所示的鏈棧中,若要將元素 3 出棧,根據 先進後出 的原則,要先將元素 4 出棧,也就是從鍊錶中摘除,然後元素 3 才能出...

8 棧和佇列(2)

1 2 4 5 就是中綴表示式,加減符號在數字之間的表示式就是中綴表示式。人很習慣這樣的表示式,但是計算機不喜歡了,因為我們有小括號中括號大括號,還允許乙個巢狀乙個,這樣子計算機就要進行很多次if判斷才行決定 先計算。後來,在20世紀三十年代,波蘭邏輯學家jan.lukasiewicz不知道是像牛頓...

棧和佇列筆記2

佇列也稱為堆疊,是一種先進後出,刪除和插入都在棧頂操作的線性表 棧的特性 先進後出,後進先出 最先放入棧的內容最後被拿出來,最後放入棧的內容最先被拿出來 解密回文 include include intmain 判斷字串的長度是奇數還是偶數,並找到需要進行字元匹配的起始下標 if len 2 0 e...