棧的運用(3)

2022-01-17 08:30:05 字數 467 閱讀 1200

問題描述:

試寫乙個判別表示式中開,閉括號是否配對出現的演算法

問題分析:

這道題很簡單,表示式存入陣列中,判斷,開,閉括號的個數相等,但是也要注意順序,你不能出現這樣的情況(【)】這個就不是正確的表示式了,也就是說兩個匹配的操作符之間不能有其他的操作符。想到昨天做的簡答題,把運算子入棧再去判斷。

int main()

while(!stackempty(s))//怎樣使棧後移,還是遇到坎了。所以這裡的思路出現問題。。

(是還沒有很理解,出棧的演算法和判斷棧為空的演算法把,理解了,就明白,怎樣用了,現在了解了點)

書上的演算法:

bool bracketcorrespondency(char  a)

i++;

}if(s.size!=0)

return false;

return true;

}這個演算法很好地解決了這個運算子匹配的問題。

單調棧的運用

單調棧本質上只是單調遞增或遞減的棧,有點類似於單調佇列,但不同之處在於插入乙個元素時,會彈出棧中 所有不符合單調性的元素 來個例子吧!當乙個單增的棧stack 向其中壓入元素6時,stack 向其中壓入元素2時,stack彈出2,3,4,且stack 向其中壓入0時,stack彈出1,2,3,4,s...

單調棧的運用

題目大意 有一群列隊,面朝右站立的牛,輸入每頭牛的身高,如果視線前方有一頭高於自己的牛,則看不到它之後的牛 求出所有牛能看到頭頂的個數。n方演算法超時,故考慮優化,首先能想到的是,在計算左邊的牛能看到多少牛時,可以利用右邊的結果。棧優化的思路即是,從右向左遍歷牛的身高,同時對棧進行操作 棧中存放牛的...

單調棧的運用

單調棧可以用來是實現在 離線的情況下,o n 的處理出陣列中所有點比某個點小或大最近的距離是多少 具體做法是用棧來維護一邊的點的下表,由於假如ihj 那麼h i 便永無出頭之日 可以把他刪了,而在棧裡能找到的直到第一次出現的小與hi的h j 就一定是最近的,每個點出棧一次,進棧一次,所以時間複雜度是...