打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【数据结构】栈的应用

diligentyang于 2017-04-29 14:11:27

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

用计算机实现带括号的四则运算的方式。

这里的困难在于乘除运算的优先级高于加减运算,并且加入了括号,使得问题变得更加困难。

20世纪50年代,波兰逻辑学家想到了一种不需要括号的后缀表达法,我们也把它称为逆波兰表示

比如:9+(3-1)*3+10/2,如果用后缀表示法就是9 3 1 - 3 * + 10 2 / +,这样的表达式称为后缀表达式,叫后缀的原因在于所有的符号都是要在运算数字的后面出现。

后缀表达式的计算方式

为了解释后缀表达式的好处,我们先来看看,计算机是如何计算后缀表达式的。

后缀表达式9 3 1 - 3 * + 10 2 / +

规则:从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到是符号,就将处于栈顶的两个数字出栈,进行计算,然后计算结果进栈,一直到最终获得结果。

果然后缀表达式可以很顺利的解决计算问题。那么这个后缀表达式是怎么得出来的呢?

中缀表达式转后缀表达式

我们把平时标准的四则运算表达式比如9+(3-1)*3+10/2 叫做中缀表达式。

中缀表达式:9+(3-1)*3+10/2 转换后缀表达式: 9 3 1 - 3 * + 10 2 / +

规则:

  1. 当当前字符为数字时,直接输出;

  2. 当当前字符为”(“时,将其压栈;

  3. 当当前字符为”)”时,则弹出堆栈中最上的”(“之前的所有运算符并输出,然后删除堆栈中的”(” ;

  4. 当当前字符为运算符时,则依次弹出堆栈中优先级大于等于当前运算符的(到”(“之前为止),输出,再将当前运算符压栈;

  5. 最后弹出所有栈中的内容输出

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
hdoj 1237 简单计算器(计算器应用)
012
数据结构之堆栈
女朋友学高数,我花了 15 分钟用栈给她写了一个计算器 | 原力计划
后缀表达式
算术表达式的前缀表达式,中缀表达式和后缀表达式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服