[()]] 這個(gè)修改老師是不是講錯(cuò)了 if (str[i] != currentNeed) else pNeedStack->pop(currentNeed) 當(dāng)?shù)谒膫€(gè)結(jié)束后 currentNeed就pop出來(lái)等于‘】’了 然后又不滿足上面的IF 所以跳到else 直接空了
2017-10-02
已采納回答 / 進(jìn)擊的單純
棧底沒有指向,棧頂這時(shí)的值為1,但也不能說棧頂指向他,這又不是指針??梢哉f棧頂只是記錄了這個(gè)棧的元素個(gè)數(shù)。但這時(shí)通過棧頂?shù)闹悼梢栽L問到它。
2017-10-01
接上,最后檢測(cè)棧長(zhǎng)和matching ,棧長(zhǎng)==0 &&matching 則匹配,否則不匹配。
這樣寫可以跳過中間的空格等無(wú)關(guān)字符(實(shí)際應(yīng)用也多半如此)。如果要求異常字符直接不匹配,可以修改default。親自編碼檢測(cè)。歡迎探討。
這樣寫可以跳過中間的空格等無(wú)關(guān)字符(實(shí)際應(yīng)用也多半如此)。如果要求異常字符直接不匹配,可以修改default。親自編碼檢測(cè)。歡迎探討。
2017-09-27
我只用了一個(gè)棧實(shí)現(xiàn)的,就是“wjxdsg”小伙伴說的思路。簡(jiǎn)要敘述一下細(xì)節(jié),給個(gè)參考:
首先定義一個(gè)變量matching表示當(dāng)前是否匹配(初值為true),循環(huán)遍歷整個(gè)字符數(shù)組,循環(huán)中用switch語(yǔ)句,如果是左括號(hào)就入棧,右括號(hào)就出棧,將出棧字符與目前字符匹配,如果匹配,則break,不匹配則將matching賦為false后break。(注意這里同樣需要考慮前面括號(hào)都匹配,而末尾出現(xiàn)右括號(hào)的情況,所以必須在出棧前檢測(cè)站是否為空,為空就將matching賦為false,break)。default直接break(跳過無(wú)關(guān)字符),switch后檢測(cè)matching,為false則跳出循環(huán)。接下
首先定義一個(gè)變量matching表示當(dāng)前是否匹配(初值為true),循環(huán)遍歷整個(gè)字符數(shù)組,循環(huán)中用switch語(yǔ)句,如果是左括號(hào)就入棧,右括號(hào)就出棧,將出棧字符與目前字符匹配,如果匹配,則break,不匹配則將matching賦為false后break。(注意這里同樣需要考慮前面括號(hào)都匹配,而末尾出現(xiàn)右括號(hào)的情況,所以必須在出棧前檢測(cè)站是否為空,為空就將matching賦為false,break)。default直接break(跳過無(wú)關(guān)字符),switch后檢測(cè)matching,為false則跳出循環(huán)。接下
2017-09-27