栈的应用——后缀表达式

41 篇文章 0 订阅

后缀表达式的定义

  • 实例(中缀转后缀):
    5+4=>5 4 +
    1+2*3 => 1 2 3 * +
    8+(3-1) * 5 => 8 3 1-5 *+
  • 中缀表达式符合人类的阅读和思维习惯。
  • 后缀表达式符合计算机的“运算习惯”
  • 在扫描中,若遇到一个操作数,则把它压人堆栈。若遇到一个操作符,则将其与栈顶的操作数相匹配。把这些操作数弹出栈,由操作符执行相应的计算,然后将计算结果压人操作数栈。
中缀转后缀算法:

遍历中缀表达式中的数字和符号:
对于数字: 直接输出4
对于符号:
左括号: 进栈
运算符号:与栈顶符号进行优先级比较+
若栈顶符号优先级低: 此符合进栈(默认栈顶若是左括号, 左括号优先级最低)-
若栈顶符号优先级高: 将栈顶符号弹出并输出,之后进栈
右括号: 将栈顶符号弹出并输出,直到匹配左括号。
遍历结束: 将栈中的所有符号弹出并输出

计算机是如何基于后缀表达式计算的?。
  • 例如:831-5*+ 的计算过程如下:
  • 1.遍历后缀表达式中的数字和符号。
  • 2.对于数字:进栈
  • 对于符号:
    • 从栈中弹出右操作数。
    • 从栈中弹出左操作数。
    • 根据符号进行运算。
    • 将运算结果压入栈中,
  • 遍历结束:栈中的唯一数字为计算结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值