前缀式表达式求值

上一篇博客讲了中缀,后缀表达式的求法,这里就记载一下前缀的。
可以参考这篇博客
nyoj ACM:前缀式计算( 堆栈的使用 或 递归 )

比如求 : + 2 * + 3 4 5
注意输入的之间都有空格
思路:
1. 用数组s接受前缀表达式,连同空格一起接收。
2. 然后将s全部压入堆栈A中
3. 每次从堆栈A中取出一个字符x。

  • 如果是数字,那么就看A的下一个字符y是数字还是小数点还是空格。(因为可能有小数,这样会占用多个字符)
    • 如果y是空格,直接将x压入B中;
    • 如果y是小数点,那么再取小数点下一个数,三者合并就得到完整的小数,然后压入B中;
    • 如果y 是数字,那么表明x和y同为某一小数的小数部分,且y是x的前一位,那么不断循环,直到找到小数点,再加上小数点后面的数字,3者合并,就得到一个完整的小数,然后压入堆栈B中
  • 如果是空格,忽略掉即可。
  • 如果是x运算符,那么M= B.POP() , N= B.POP() , 然后M,X,N运算,将结果压入B中。所以,总体来说,就是用这个方法后不用管优先级,遇到运算符就用
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值