佇列
佇列比棧稍微複雜一點,特別是順序儲存結構中,有乙個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...