default后的內容毫無必要吧?
看了老師講得這個括號匹配的問題,感覺有幾個問題:
1、首先老師這個程序只能判斷所有字符都為括號的匹配問題,只要里面存在其他字符(即使為空格),就會判斷為不匹配,比如[(4)]這種;
2、因此,default后完全是多余的,因為根本不會存在其他字符的情形;
3、而且,default后面去掉,該程序對于完全是括號的字符的括號匹配判斷完全是夠用的,首先像[()]這種肯定是能判斷的,而且針對后面這種[()]],當判斷了,前面四個括號后,pStack所指的棧和pNeedStack所指的棧此時均為空了,而且currentNeed也被置為了0;因此接下來會執行:
if(pStack->stackEmpty()) { cout?<<?"字符串括號匹配"?<<?endl; } else { cout?<<?"字符串括號不匹配"?<<?endl; }
也就判斷出了[()]]括號不匹配了;
我想老師之所以寫了default是因為老師還寫了字符串中還有其他字符的情形的括號匹配問題
2019-07-27
其實說白了一個棧就足夠解決這個問題了,老師寫這些應該是為了后續擴展的需要吧
2018-09-06
我覺得有道理,只要currentNeed設為0,[()]]中最后一個‘]’就可以放入pStack棧中,此時pStack非空就可得不匹配