回覆列表
  • 1 # 繁星訊息

    一、中綴表示式需要轉換成字尾表示式,轉換演算法:

    1、遇到運算元:直接輸出(新增到字尾表示式中)

    2、棧為空時,遇到運算子:直接入棧

    3、遇到左括號:將其入棧

    4、遇到右括號:執行出棧操作,並將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出。

    5、遇到其他運算子,加減乘除:彈出所有優先順序大於或者等於該運算子的棧頂元素,然後將該運算子入棧

    6、最終將棧中的元素依次出棧,輸出。

    例如:a+b*c+(d*e+f)*g ----> abc*+de*f+g*+

    二、字尾表示式求值:

    1、設定一個棧,開始時,棧為空;

    2、然後從左到右掃描字尾表示式,若遇運算元,則進棧;

    3、若遇運算子,則從棧中退出兩個元素,先退出的放到運算子的右邊,後退出的放到運算子左邊,運算後的結果再進棧,直到字尾表示式掃描完畢;

    4、最後,棧中僅有一個元素,即為運算的結果。

  • 中秋節和大豐收的關聯?
  • CS75 PLUS這車開出去怎麼樣?入手哪款最划算?