棧與隊(duì)列

棧與隊(duì)列

一娶吞、棧

棧(stack)是限定僅在表尾(棧頂)進(jìn)行插入和刪除操作的線(xiàn)性表垒迂。
后進(jìn)先出(LIFO):

進(jìn)棧、出棧
棧的抽象數(shù)據(jù)類(lèi)型
棧的順序儲(chǔ)存結(jié)構(gòu)(數(shù)組)
棧的結(jié)構(gòu)定義
兩棧共享空間
兩棧共享空間

關(guān)鍵思路:它們是數(shù)組兩端妒蛇,向中間靠攏机断。top1和top2分別是棧1和棧2的棧頂指針楷拳。
棧1為空,top1 = -1,;棧2為空吏奸,top2 = n;
判斷棧滿(mǎn)欢揖,top1+1 == top2

兩棧共享空間結(jié)構(gòu)
棧的鏈?zhǔn)絻?chǔ)存:鏈棧

棧頂指針在頭部,單鏈表中的比較常用的頭結(jié)點(diǎn)失去意義奋蔚,通常鏈棧無(wú)需頭節(jié)點(diǎn)她混。

//單鏈表基礎(chǔ)結(jié)構(gòu)
template<class DataType>
struct Node{
  DataType data;
  Node<DataType> *next;
};
//使用時(shí)需多聲明一個(gè)棧頂指針top
Node<DataType> *top = new Node<DataType>;
image.png
棧的應(yīng)用——遞歸

斐波那鍥數(shù)列:前面相鄰兩項(xiàng)之和,構(gòu)成后一項(xiàng)泊碑。

Fibonacci數(shù)學(xué)定義

執(zhí)行過(guò)程

遞歸與棧
  • 遞歸:函數(shù)直接或間接調(diào)用自身(反復(fù)調(diào)用坤按,建立大量函數(shù)副本;但結(jié)構(gòu)清晰馒过、簡(jiǎn)潔)臭脓。
  • 迭代:無(wú)需反復(fù)調(diào)用和占用額外內(nèi)存。
棧的應(yīng)用——四則運(yùn)算表達(dá)式求值

后綴(逆波蘭)表示法:

  • 將中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式(棧用來(lái)進(jìn)出運(yùn)算的符號(hào))沉桌;


  • 將后綴表達(dá)式進(jìn)行運(yùn)算得出結(jié)果(棧用來(lái)進(jìn)出運(yùn)算的數(shù)字)


二谢鹊、隊(duì)列(queue)

隊(duì)列:先進(jìn)先出(FIFO)

  • 入隊(duì)(插入):新元素始終添加在隊(duì)列的末尾;
  • 出隊(duì)(刪除):發(fā)生在隊(duì)頭留凭,只能移除第一個(gè)元素;

應(yīng)用非常頻繁:鍵盤(pán)輸入“god”,若使用棧偎巢,輸出“dog”;使用隊(duì)列蔼夜,輸出“god”

為避免隊(duì)頭、隊(duì)尾處理麻煩:front指針指向隊(duì)頭元素压昼,rear指針指向超尾元素求冷。

左圖為隊(duì)列空,右圖為元素入隊(duì)后

存在問(wèn)題:“假溢出”現(xiàn)場(chǎng)窍霞,隊(duì)尾滿(mǎn)了匠题,但隊(duì)頭還是空閑。


尾指針溢出但金,但隊(duì)列仍未滿(mǎn)

循環(huán)隊(duì)列:頭尾相接的順序儲(chǔ)存結(jié)構(gòu)韭山。

循環(huán)隊(duì)列及指針重合問(wèn)題

存在問(wèn)題:當(dāng)frontrear指針重合時(shí),隊(duì)列存在空或滿(mǎn)兩種情況冷溃。
解決方法:

  • 設(shè)標(biāo)志變量flag钱磅,當(dāng)front==rear,flag=0,隊(duì)列為空;當(dāng)front==rear,flag=1,隊(duì)列滿(mǎn)似枕,
  • 隊(duì)列空時(shí)盖淡,front==rear;隊(duì)列滿(mǎn)時(shí)凿歼,保留一個(gè)元素空間褪迟。

    ★:- 隊(duì)列滿(mǎn)的條件是(rear+1)%QueueSize == front冗恨;
    ★:- 通用計(jì)算隊(duì)列長(zhǎng)度公式:(rear - front + QueueSize)%QueueSize
    ☆:-采用%QueueSize防止長(zhǎng)度溢出——最多一整圈。
循環(huán)隊(duì)列順序儲(chǔ)存結(jié)構(gòu)

鏈隊(duì)列:只能尾進(jìn)頭出的線(xiàn)性表的單鏈表味赃。

鏈隊(duì)列結(jié)構(gòu)

鏈隊(duì)列的入隊(duì)派近、出隊(duì)操作示意圖

若可以確定隊(duì)列長(zhǎng)度最大值,建議用循環(huán)隊(duì)列 洁桌;無(wú)法預(yù)估隊(duì)列長(zhǎng)度渴丸,則使用鏈隊(duì)列。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末另凌,一起剝皮案震驚了整個(gè)濱河市谱轨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吠谢,老刑警劉巖土童,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異工坊,居然都是意外死亡献汗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)王污,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罢吃,“玉大人,你說(shuō)我怎么就攤上這事昭齐∧蛘校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵阱驾,是天一觀的道長(zhǎng)就谜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)里覆,這世上最難降的妖魔是什么丧荐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮喧枷,結(jié)果婚禮上虹统,老公的妹妹穿的比我還像新娘。我一直安慰自己割去,他們只是感情好窟却,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著呻逆,像睡著了一般夸赫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咖城,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天茬腿,我揣著相機(jī)與錄音呼奢,去河邊找鬼。 笑死切平,一個(gè)胖子當(dāng)著我的面吹牛握础,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悴品,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼禀综,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了苔严?” 一聲冷哼從身側(cè)響起定枷,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎届氢,沒(méi)想到半個(gè)月后欠窒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡退子,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年岖妄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寂祥。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荐虐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壤靶,到底是詐尸還是另有隱情缚俏,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布贮乳,位于F島的核電站,受9級(jí)特大地震影響恬惯,放射性物質(zhì)發(fā)生泄漏向拆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一酪耳、第九天 我趴在偏房一處隱蔽的房頂上張望浓恳。 院中可真熱鬧,春花似錦碗暗、人聲如沸颈将。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晴圾。三九已至,卻和暖如春噪奄,著一層夾襖步出監(jiān)牢的瞬間死姚,已是汗流浹背人乓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留都毒,地道東北人色罚。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像账劲,于是被迫代替她去往敵國(guó)和親戳护。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 棧 棧是限定僅在表尾進(jìn)行插入和刪除操作的線(xiàn)性表瀑焦。 棧又稱(chēng)為后進(jìn)先出(Last In First Out )的線(xiàn)性表...
    jtsky閱讀 644評(píng)論 0 0
  • 1.棧 1.1.棧的定義 棧(stack)是限定僅在表尾(棧頂 top)進(jìn)行插入和刪除操作的后進(jìn)先出的線(xiàn)性表腌且。 p...
    JonyFang閱讀 1,351評(píng)論 0 21
  • 棧是限定僅在表尾進(jìn)行插入和刪除操作的線(xiàn)性表。隊(duì)列是只允許在一端進(jìn)行插入操作蝠猬,而在另一端進(jìn)行刪除操作的線(xiàn)性表切蟋。 棧的...
    Yix1a閱讀 508評(píng)論 0 0
  • 棧 棧是限定僅在表尾進(jìn)行插入和操作的線(xiàn)性表;允許插入和刪除的一端稱(chēng)為棧頂榆芦,另一端稱(chēng)為棧底柄粹,不含任何數(shù)據(jù)元素的棧稱(chēng)為...
    Bangys閱讀 435評(píng)論 0 0
  • 1. 棧 1.1 定義 棧,即只能在表尾進(jìn)行插入或刪除操作的線(xiàn)性表匆绣。 其中驻右,“表尾”稱(chēng)為“棧頂”,另一端則為“棧底...
    我才是臭吉吉閱讀 461評(píng)論 0 0