順序棧實現括號匹配的檢驗(C語言實現) 棧

2021-10-08 06:07:34 字數 980 閱讀 8033

假設表示式中允許括號巢狀,則檢驗括號是否匹配的方法可用「期待的急迫程度」這個概念來描述。

我們下面給和例子進行說明:

可能出現的不匹配的情況:

① 盼來的右括號不是所「期待」的;

② 到來的是「不速之客」 (右括號多);

③ 到結束也未盼來所「期待」的括號 (左括號多)。

1)凡出現左括號,則進棧;

2)凡出現右括號,首先檢查棧是否空。

若棧空,則表明該「右括號」多餘;

否則和棧頂元素比較,

若相匹配,則「左括號出棧」,

否則表明不匹配。

3)表示式檢驗結束時,

若棧空,則表明表示式中匹配正確,

否則表明「左括號」有多餘的。

#include

#include

#include

bool

isvalid

(const

char

* s)

;int

main()

";if(

isvalid

(tmp)

)printf

("ok\n");

else

printf

("no\n");

return0;

}bool

isvalid

(const

char

* s)

else')

if(s[i]

==']')if

(s[i]

==')')}

}if(pos <0)

return

true

;return

false

;}

執行結果

括號匹配的檢驗(棧)

include using namespace std include include define ture 1 define false 0 define ok 1 define error 0 define overflow 2 typedef int status typedef char ...

順序棧實現括號匹配

採用順序棧程式設計實現 表示式的括號是否匹配問題。要求 輸入帶括號的表示式,判斷其中括號是否配對。擴充套件功能 給出配對括號的位序和不配對括號的位序。include include include include include define overflow 2 define stack init...

c語言棧實現括號匹配

在文字處理軟體或編譯程式設計時,常常需要檢查乙個字串或乙個表示式中的括號是否 相匹配?匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括 號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個 右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從...