← 返回学科目录

栈实现表达式求值

中缀转后缀 + 后缀表达式计算 - 交互式教学动画

支持操作符: +, -, *, /, (, ) 和数字 0-9

步骤一:中缀表达式转后缀表达式

操作符栈
栈空
后缀表达式输出

步骤二:后缀表达式求值

操作数栈
栈空
计算结果

当前状态与步骤说明

请输入表达式并点击"运行"按钮开始动画演示。

算法规则说明

中缀转后缀算法规则:

  • 从左到右扫描中缀表达式
  • 遇到操作数:直接输出到后缀表达式
  • 遇到操作符:
    • 栈空或栈顶为'(':直接压栈
    • 优先级高于栈顶:直接压栈
    • 优先级不高于栈顶:弹出栈顶并输出,重复比较
  • 遇到'(':直接压栈
  • 遇到')':弹出栈中操作符并输出,直到遇到'('
  • 表达式扫描完后,弹出栈中所有操作符并输出

后缀表达式求值规则:

  • 从左到右扫描后缀表达式
  • 遇到操作数:压入操作数栈
  • 遇到操作符:
    • 弹出栈顶两个操作数(先弹出的是右操作数)
    • 按操作符进行计算
    • 将计算结果压回栈中
  • 扫描结束后,栈中剩余的一个数就是最终结果

操作符优先级:

  • 乘除 (*, /):优先级 2
  • 加减 (+, -):优先级 1
  • 左括号 (:优先级 0(特殊处理)
操作数栈 运算符栈 输出结果