压栈实现计算器

本文介绍了如何利用栈来实现中缀表达式转后缀表达式,并通过后缀表达式计算加减乘除括号的计算器。通过中缀变后缀的算法,结合栈的先进后出特性,处理运算符的优先级。文章以经典例子a+b*(c-d)+e说明,最后得到后缀表达式abcdn-*+e+,并通过遍历后缀表达式完成计算。
摘要由CSDN通过智能技术生成

参考博文

之前不会写计算器被嘲笑过一番,今天在复习一遍中缀表达式变后缀,然后用后缀表达式计算简单加减乘除括号的计算器,其实让我代码实现还是很困难的,但是我们要有打不死的小强精神哇!

在舍友们纷纷霉霉的出去约会电影街拍的周六,我还在邋里邋遢的沉浸于《三体》以及找不到实习的懒惰生活中并打起精神敲一篇参考于别人blog的博文。
emm我是最棒(pang)的!
加油鸭 我的胖友们

原理
【中缀变后缀】

每一个中缀表达式都可以转换为后缀表达式,利用stack先进后出的原则进行优先级的选择。
1.如果是数字,直接输出到后缀表达式的尾端。比如第一个a直接写到后缀表达式的第一个,b在a的后边。
2.如果是 ‘+’ ‘-’号,pop出栈顶的操作符,直到栈空;或者直到pop出‘(’,此时要将‘(’重新push入栈并不加入后缀表达式;最后将此操作符入栈。
3.如果是 ‘ * ’ ‘/’ ‘(’ 直接入栈,谁让他们优先级最高嘞
4.如果遇到‘)’,依次pop出栈顶操作符添加到后缀表达式的尾部,直到pop出‘(’,丢弃‘(’。
5. 遇到终止符‘=’,一次pop出栈顶元素,直到栈为空

【举个小例子】
用最经典的a+b*(c-d)+e举例

  1. a,直接添加到后缀表达式的尾部,中缀

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值