【題目描述】
如果乙個括號序列中的每個左括號都有乙個右括號與之完成配對,這個序列就是乙個合法的括號匹配序列。
例如:
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 判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。將左括號進棧,當遇到右括號時與棧頂元素進行括號匹配,左右括號不匹配或者棧為空時退出,匹配則彈出棧頂元素,最後判斷棧是否為空,為空則說明所有的括號都匹配了,反之則存在不匹配的括號...