括號匹配c

2021-09-12 10:45:29 字數 1218 閱讀 5375

第一次用棧(stack) 這種題我覺得天生棧思想,

這題主要做法是 左括號入棧,遇到右括號 從棧裡取出和棧.top匹配,

#include#include#include#includeusing namespace std;

bool left(char a)

bool right(char a)';

}bool pan(char a,char b)';

}bool isdui(string t)

棧的幾個基本用法,

1、棧(stack)是一種線性儲存結構,它具有如下特點:

(1)棧中的資料元素遵守「先進後出"(first in last out)的原則,簡稱filo結構。

(2)限定只能在棧頂進行插入和刪除操作。

(1)棧頂與棧底:允許元素插入與刪除的一端稱為棧頂,另一端稱為棧底。

(2)壓棧:棧的插入操作,叫做進棧,也稱壓棧、入棧。

(3)彈棧:棧的刪除操作,也叫做出棧。

3、棧的常用操作為:

(1)彈棧,通常命名為pop

(2)壓棧,通常命名為push

(3)求棧的大小

(4)判斷棧是否為空

(5)獲取棧頂元素的值

4、棧的常見分類:

(1)基於陣列的棧——以陣列為底層資料結構時,通常以陣列頭為棧底,陣列頭到陣列尾為棧頂的生長方向

(2)基於單鏈表的棧——以煉表為底層的資料結構時,以煉表頭為棧頂,便於節點的插入與刪除,壓棧產生的新節點將一直出現在鍊錶的頭部

5、例項分析

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

s.size(); //返回棧中元素的個數

s.top(); //返回棧頂元素, 但不刪除該元素

s.pop(); //彈出棧頂元素, 但不返回其值

s.push(); //將元素壓入棧頂

參考還有一種簡單模擬的,

#includeusing namespace std;

int main()') cnt3--;

if(cnt3 < 0 || cnt2 < 0 || cnt1 < 0)

} if(cnt1 == 0 && cnt2 == 0 && cnt3 == 0) cout << "yes";

else cout << "no";

return 0;

}

括號匹配 棧 c

問題描述 假設乙個算術表示式中可以包含三種括號 圓括號 方括號 及花括號 且這三種括號可以任意次序巢狀。編寫演算法判斷給定表示式中所含括號是否配對出現。解答 假設表示式已存入字元陣列a n 中,具體演算法如下 include using namespace std char s 99 棧儲存 int...

括號匹配 棧 C

描述 假設表示式中只包含三種括號 圓括號 方括號和花括號,它們可相互巢狀,如 或 等均為正確的格式,而 或均為不正確的格式.輸入一串括號 如果輸入的右括號多餘,輸出 extra right brackets 如果輸入的左括號多餘,輸出 extra left brackets 如果輸入的括號不匹配,輸...

C 括號匹配問題

用棧來解決 1.建立乙個棧 2.遍歷字串如果是左括號就壓棧 3.如果是有括號 判斷此時棧是否為空 3.1如果為空則不匹配 3.2如果不為空則彈出乙個元素 4.遍歷結束後判斷棧是否為空 若為空則匹配,不為空不匹配 bool ismatch string str 如果當前字元為右括號 if str i ...