首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 實現算術表達式求值:中綴轉后綴(逆波蘭式)與堆疊計算

     編輯:程式設計疑難解答

問題

輸入字符串 (10+(4*5+2)-(9+6/2))/2,輸出計算結果 10。僅包含 + - * / 運算符與括號。

經典算法:兩棧法 / 逆波蘭表達式 (RPN)

  1. 中綴轉后綴(Shunting-yard 算法):
    • 掃描中綴表達式,數字直接進輸出隊列。
    • 運算符根據優先級與棧頂運算符比較,決定入棧或彈出至輸出。
    • 左括號入棧,遇右括號彈出至左括號。
  2. 后綴表達式求值:
    • 掃描后綴表達式,數字入棧。
    • 遇運算符彈出兩個操作數計算,結果入棧。
    • 最終棧頂元素即為結果。

參考資源

擴展建議

  • 支持一元負號、次方運算、函數調用。
  • 使用 double 類型避免整數除法截斷。
  • 異常處理:除零、括號不匹配、非法字符。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved