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

算法思想:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值