国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用棧計算表達式的值 By Assassin

2019-11-10 22:37:41
字體:
來源:轉載
供稿:網友

假設算術表達式只包含”+”、“-”、“*”、“/”、正整數和括號的合法數學表達式,求算術表達式值。

過程是利用了先將算術表達式(中綴表達式)轉換成后綴表達式,然后對后綴表達式求值! 具體的中綴表達式和后綴表達式是什么可以參考 http://www.bkjia.com/cjjc/1170210.html 的前一部分。

(一)具體的中綴表達式轉換成后綴表達式的法則:

1.遇到操作數直接輸出 2.若遇到右括弧“)”,則連續出棧輸出,直到遇到左括弧“(”為止。其中,左括弧出棧但是并不輸出 3.若是其他操作符,則和棧頂的操作符比較優先級,若小于等于棧頂操作符的優先級,則連續出棧輸出,直到某一位的優先級值大于棧頂操作符的優先級結束,操作符進棧; 4.輸出棧中剩余的操作符。

實現這個轉換的關鍵是確定操作符的優先級,因為優先級決定操作符是否進棧和出棧,同時操作符在棧內外的優先級不同,換種說法,符號入棧前有個比較的時候按照棧外值查表,但凡已經在棧內的需要按棧內表查?。。。ㄔ酱笤礁撸?/strong>

棧外:

符號 ( *和/ +和- )
7 5 3 1

棧內:

符號 ( *和/ +和- )
1 5 3 7

不要糾結上面值大小,其實只是為了分辨一下優先級罷了。

(二)后綴表達式計算的法則: 從左往右掃描后綴表達式,遇到操作數就進棧,遇到操作符就從棧中彈出兩個操作數,執行相應的運算,并將結果進棧。如此下去,直到遇到結尾符#結束,彈出的棧頂元素就是結果。注意這里只討論雙目運算符,在彈出的兩個操作數棧,先出棧的放在操作符的右邊,后出棧的放在左邊。

然后給大家一道例題:藍橋杯 表達式計算原題鏈接

具體的實現可以看我的博客如下: 藍橋杯題目解答


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永登县| 长子县| 班玛县| 绵竹市| 金川县| 周宁县| 长子县| 鸡东县| 余庆县| 花莲市| 榆树市| 威海市| 茂名市| 枝江市| 绥芬河市| 蒙城县| 德安县| 蚌埠市| 五原县| 施秉县| 泗水县| 静安区| 英德市| 屏南县| 宜阳县| 平湖市| 咸阳市| 垫江县| 巴彦淖尔市| 墨玉县| 礼泉县| 博罗县| 东阿县| 广宁县| 长海县| 耒阳市| 平塘县| 潢川县| 定襄县| 万荣县| 苍南县|