c 解決括號匹配及逆波蘭表示式

2021-09-25 18:01:11 字數 1119 閱讀 5297

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

思路:當棧為空時入棧,沒遇到左括號時一直入棧。當出現左括號時比較與棧頂元素是否匹配,如果匹配則出棧。在完成後如果棧仍然不為空則說明存在不互相匹配的括號。

#include

#include

#include

using namespace std;

class solution'

) s1.

pop();

else

s1.push

(ch);}

return s1.

empty()

;}};

intmain()

}]";

if(a.

isvalid

(s))

cout <<

"匹配"

<< endl;

cout <<

"不匹配"

<< endl;

system

("pause");

}

有效的運算子包括 +, -, *, / 。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。

思想:將數字入到乙個棧s1中,遇到二元運算子時通過top()取出兩個棧頂數字進行運算,運算完成後將所得結果入棧繼續,直到陣列為空。

利用棧解決括號匹配和逆波蘭表示式

當我們學習了棧這種資料結構滯後,我們就可以利用棧來解決一些實際問題。這裡是我們給出的動態順序棧的實現 template class t class stack void push const t data void pop bool empty t top t top const size t si...

棧解決 括號匹配問題和逆波蘭表示式

所需知識 棧 字串 思路分析 有如下四組字串 如何檢測左右括號順序與個數是否匹配 char a abc char b abc char c abc char d abc 1 解決 1 當讀到乙個左括號的字元,包括 時,檢測棧頂元素是否為與之匹配的左括號,若是,證明這一對括號匹配,將這個左括號出棧繼續...

C語言 解決括號匹配問題和逆波蘭表示式求值為題

1 括號匹配問題 解決思路 ch topnumandtop s 返回棧頂元素並出棧 switch ch break case if per i break case break if isempty s 1 判斷棧是否為空 等1為空,等0不為空 else 測試 void test match bra...