利用栈结构计算表达式串算法

来源:互联网 发布:lol安妮舞会公主淘宝 编辑:程序博客网 时间:2024/06/06 11:49

算法思想:

  1. 将中缀表达式转化为后缀表达式
  2. 顺序的扫描后缀表达式中的每一个字符,并作如下操作:如果该字符为操作数,则将其压入栈中;如果该字符为操作符<operator>,则连续从栈中弹出两个操作数Y和X,并作运算操作X<operator>Y,并将计算结果压入栈中。当整个表达式串扫描完毕,栈顶存放的就是表达式的结果。
  3. 其中步骤1的算法思想如下:
  • 从左至右扫描中缀表达式,如果遇到操作数时直接加入到后缀表达式串中;否则遇到操作符时,1、若为左括号'(',直接入栈;2、若为右括号')',则依次将栈中的操作符加入到后缀表达式中,直到遇到'(',并且将'('出栈;3、若为其他操作符,当其优先级高于栈顶操作符的优先级时,直接将其入栈,否则从栈顶开始,依次弹出比当前操作符优先级高或相等的操作符,直到遇到一个优先级比它低的操作符或者遇到左括号'('。当整个中缀表达式扫描完毕时,将栈中剩余的操作符依次弹出加入到后缀表达式中。
  • 相应实现java代码:点击打开CODE链接

1 0