Qt计算器开发(一):后缀表达式实现完整数学表达式的计算

导言

相信学过数据结构的人都听说过后缀表达式,就是在学习栈的时候。可能也有很多人实现过这一算法,不过基本上也都是在控制台窗口里用用。相信大家也都用过计算器windows里面的calc。但是有没发现它只能单步计算,而不能一次计算一个表达式。后缀表达式就有了用武之地,可以一次性计算一整个个式子。科技要为生产服务,所以我就实际去做了一个依据后缀表达式的带有图形化界面的计算器。

什么是后缀表达式

后缀表达式又称逆波兰式,用于简化计算数学表达式,是计算器类软件开发的重要理论依据。这部分有两个要点:

  • 中缀表达式转后缀表达式
  • 后缀表达式的计算

中缀表达式转后缀表达式

正常的数学表达式就是一个中缀表达式,假设使用字符串存储这个表达式。设置一个运算符栈op,并把字符'\0'进栈,再设置一个保存结果的字符串(字符数组)suffix。然后顺序扫描中缀表达式,如果是数字字符则直接加入到suffix,如果是 运算符 + - * /。则和运算符栈op的栈顶元素比较,若是比栈顶运算符的级别高,则进栈。否则退出栈顶元素,把它加入到suffix,然后重复上一操作继续与栈顶比较,直到比栈顶级别高然后进栈为止。

其中符号的优先级:

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果冻虾仁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值