(十一)棧的應用 括號匹配檢查

2021-10-07 11:54:35 字數 1110 閱讀 5495

假設表示式中允許包括 「[()()()]>等這種是正確的,[()>]

如果棧為空,第乙個出現的就是右括號,則直接退出。如果是出現的左括號,則直接壓棧。在後續的過程中只要出現右括號,就判斷棧尾括號是否與之匹配,如果匹配就彈出棧,否則就逃過。最後如果棧為空則說明括號完全匹配,如果棧不為空則說明輸入的括號不是成對或者順序出現錯誤。

例如:輸入[()()]

首先判斷字串中第乙個字元是不是左括號,如果不是則直接退出。

第一步:[ 為左括號,壓棧 。棧內為:[

第二步:( 為左括號,壓棧 。棧內為:[ (

第三部:) 為右括號,取棧頂資料為 (,剛好匹配,彈棧。棧內為:[

第四步:( 為左括號,壓棧 。棧內為:[ (

第五步:) 為右括號,取棧頂資料為 (,剛好匹配,彈棧。棧內為:[

第六步:] 為右括號,取棧頂資料為 [,剛好匹配,彈棧。棧空。

匹配成功。

'://為右括號,如果棧為空則出錯,非空則檢查棧頂元素是否匹配,匹配則彈棧。if(

isstackempty

(&sstack)

)else')

)}break

;default

:break;}

linchar++;}

if(isstackempty

(&sstack)

)else

exit_false:

free

(ll)

;destorystack

(&sstack);}

intmain()

棧應用 括號匹配

假設表示式中允許包含兩種括號 圓括號和方括號。編寫乙個演算法判斷表示式中的括號是否正確配對。由括號構成的字串,包含 如果匹配輸出yes,否則輸出no。複製 yes解決思想 拿到字串後,遍歷字串,當遇到左括號就進棧,右括號棧頂元素出棧,如果括號是匹配的,則最終棧空。include includetyp...

棧的應用 括號匹配

3.1棧的應用 括號匹配 一 實驗目的1 掌握堆疊特殊線性表的儲存方式的基本操作方法。2 掌握堆疊後進先出運算原則在解決實際問題中的應用。3 掌握使用棧的原理來解決表示式中的括號配對問題。二 實驗內容 假設乙個算術表示式中包含圓括弧 方括弧三種型別的括弧,編寫乙個程式用於判別表示式中括弧是否正確配對...

棧的應用 括號匹配

description 在實際程式設計中,我們經常會巢狀使用括號,如 如果括號太多,可能會出現括號不匹配的情況,比如 as 等。現希望你們編寫乙個程式,判斷輸入的一段語句中的括號是否匹配。必須使用棧實現這個功能。input 字串s,s是由 以及數字字母組成的字串。output 若括號使用規範且匹配,...