在某個字串(長度不超過100)中有左括號、右括號和大小寫字母;規定(與常見的算數式子一樣)任何乙個左括號都從內到外與在它右邊且距離最近的右括號匹配。寫乙個程式,找到無法匹配的左括號和右括號,輸出原來字串,並在下一行標出不能匹配的括號。不能匹配的左括號用"$「標註,不能匹配的右括號用」?"標註.
輸入包括多組資料,每組資料一行,包含乙個字串,只包含左右括號和大小寫字母, 字串長度不超過100
注意:cin.getline(str,100)最多只能輸入99個字元!
對每組輸出資料,輸出兩行,第一行包含原始輸入字元,第二行由"$" "?"和空格組成,
"$「和」?"表示與之對應的左括號和右括號不能匹配。
((abcd(x)
)(rttyy())sss)(
((abcd(x)
$$)(rttyy())sss)(
? ?$
目前想到的思路就是先將括號類字元存入自定義的棧陣列b中 如棧頂的括號能夠與接下來比較的來自a陣列的字元匹配 則出棧 並將相匹配的括號字元標記
#include
#include
char a[
105]
;char b[
105]
;int c[
105]
;int
main()
} c[i]=0
;//標記
a[i]
='a'
;//將括號字元變為字母字元
top--
;//出棧
}else
}else
c[i]=0
;//用0標記代表輸出空格
}for
(i=0
;i)for
(i=0
;i)memset
(c,0
,sizeof
(c))
;printf
("\n");
}return0;
}
括號匹配問題 棧
根據棧的先進後出特點 將遇到的左括號依次壓入棧中 遇到右括號時取出棧頂元素 退棧處理 比較棧頂元素和輸入的括號是否想匹配 注意 1.判斷的字串流的奇偶性 2.注意輸入的字元是否為所需的括號字元 3.考慮棧的棧頂和棧底是否溢位 4.棧在開始和結束時都應該是空的.所以匹配到最後還要判斷棧是否為空,若非空...
括號匹配問題 順序棧
思想 每讀入乙個括號 1 若是左括號,則直接入棧,等待相匹配的同類右括號。2 若是右括號,且與當前棧頂的左括號同型別,則二者匹配,將棧頂的左括號出棧,否則屬於不合法的情況。include include define true 1 define false 0 define stack size 5...
棧解決括號匹配問題
題目 假設乙個表示式中可以包含三種括號 小括號,中括號,大括號,且這三種括號可以任意次序巢狀使用,如 3 5 4 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...