棧的應用之括號匹配問題

2021-08-25 19:41:15 字數 953 閱讀 9400

【題目描述】

如果乙個括號序列中的每個左括號都有乙個右括號與之完成配對,這個序列就是乙個合法的括號匹配序列。

例如:

char

a = "(())abc"

;//左右括號匹配不正確

char b = "(()))abc"

;//右括號多於左括號

char c = "(()()abc"

;//左括號多於右括號

char d = "(())abc"

;//左右括號匹配正確

請用一種資料結構判斷出以上四個不同序列的括號是否匹配。

【思路講解】

【**實現】

int matchbrackets(stack s, const

char* pstr)//括號匹配(if實現)

len = strlen(pstr);//求括號表示式長度

for (i = 0; i if (!isbrackets(pstr[i]))//判斷 i 位置上的字元是否為括號

else

//是括號

else

//右括號

else

//棧中有左括號

else

if ((top == '[')&&(pstr[i] == ']'))

else

if ((top == ''))

else

//不匹配}}

continue;}}

if (stackempty(&s))

else

}int isbrackets(char c)//判斷字元是否為括號

' == c))

else

}

棧的應用之括號匹配問題

include include define size 10 typedef char stackelemtype typedef struct seqstack void initstack seqstack s intpush seqstack s,stackelemtype x 順序棧進棧運算...

棧的應用之括號匹配

在許多正文中都有括號,特別是在表示程式 數學表示式的正文片段裡,括號有正確配對問題。作為例子,下面考慮python程式裡的括號,在這裡可以看到 不難總結出檢查括號配對的原則 在掃瞄正文過程中,遇到的閉括號應該與此前最近遇到且尚未獲得匹配的開括號配對。如果最近的未匹配開括號與當前閉括號不配對,或者找不...

棧的應用之括號匹配

給定乙個只包括 的字串 s 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。將左括號進棧,當遇到右括號時與棧頂元素進行括號匹配,左右括號不匹配或者棧為空時退出,匹配則彈出棧頂元素,最後判斷棧是否為空,為空則說明所有的括號都匹配了,反之則存在不匹配的括號...