括號匹配問題(棧模擬)

2021-09-29 13:13:53 字數 1018 閱讀 5918

在某個字串(長度不超過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 編寫判斷表示式括號是否匹配的程式。表示式為字串。解題思路 解決括號匹配問題我們要考慮的是優先順序,大家學過數學的都知道要想解決這類算式我們要做的就是去括號,去括號不能隨便去,要先去除最後...