棧的簡單講解

2021-09-12 11:59:23 字數 964 閱讀 2300

棧stack的特徵:後進先出

c++佇列queue類成員函式如下:

push(): 向棧內壓入乙個成員;

pop(): 從棧頂彈出乙個成員;

empty(): 如果棧為空返回true,否則返回false;

top(): 返回棧頂,但不刪除成員;

size(): 返回棧內元素的大小;

可以把棧想象成乙個木桶,後放進去的東西先拿出來;

下面舉個栗子:

括號配對問題

description

現在有一種只包括左右小括號(「(」和「)」)和空格(」 「)的字串序列,請你判斷括號是否匹配,如果匹配就輸出yes,不匹配輸出no。

input

輸入資料第一行輸入乙個t(0≤t≤100),表示測試資料的組數。

接下來有t行測試資料,每行有乙個符合題意的字串,字串長度不超過500。

output

sample input

2( ())

)(sample output

case 1:yes

case 2:no

題意:中文題。。

思路:遇到 『(』 就存到棧裡,遇到 『)』 就檢測棧是否為空,若為空輸出no,否則刪掉棧最上面的成員 ,字串讀完後如果棧內還有資料,即棧裡還有 『(』 ,輸出no,若棧為空,輸出yes

ac**:

#include

#include

#include

using namespace std;

intmain()

p.pop();

}}if(s[i]==0

&&p.

empty()

)else

printf

("no\n");

}return0;

}

單調棧講解

以前一直有接觸,但是一直沒單獨進行分析處理 單調棧 維護其中元素單調性的棧 也就是從棧底到棧頂都是有序的 維護 如果入棧的元素滿足單調性,直接入棧 如果不滿足,就讓棧頂元素出棧,直到能讓入棧元素滿足單調性為止,再將元素入棧 已經出棧的元素就被拋棄 題解鏈結 單調棧問題 我們可以用乙個單調棧來維護每個...

棧 and 佇列 詳細講解

棧與佇列就像一對兄弟一樣,學習的時候可以一塊學習。棧的標頭檔案 include佇列的標頭檔案 include棧的定義 stacks 佇列的定義 queueq 棧的函式 1.s.empty 如果棧s為空,返回true,否則返回false 2.s.size 返回棧的長度 3.s.pop 棧頂元素出棧 4...

專題講解 單調棧

單調棧的核心思想是維護乙個單調遞增或者單調遞減的雙向佇列。佇列中儲存陣列的索引值。我們以一道基本例題為例,了解單調棧的簡單框架。這道題目是一道可以用單調棧解決的問題。我們維護乙個序列,如果進來的數字比隊伍右側索引對應的數字大,彈出佇列右側。class solution object defdaily...