中缀表达式求值

本文介绍了中缀表达式转换为后缀表达式的方法,并通过使用两个栈实现中缀表达式的求值。算法思路包括遍历输入的中缀表达式,遇到数字时直接添加到后缀表达式,遇到运算符时比较其优先级,根据优先级决定是否入栈或进行运算。最后通过计算后缀表达式得到最终结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中缀表达式求值

  • 题目
    给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值
    数据可能会出现括号情况,还有可能出现多余括号情况
    数据保证不会出现>=2^31的答案
    数据可能会出现负数情况
  • 输入: (2+2)^(1+1)
  • 输出 :16

解题思路:

中缀表达式就是通用的算术或逻辑公式表示方法。
形如 (1+2)−3(1+2)-3(1+2)3(a+b)×c−d(a+b)\times c-d(a+b)×cd 等;
显然用字符串读入后不便于计算结果,我们考虑把它转为后缀表达式。
如:我们平时写 a+ba+ba+b,这是中缀表达式,写成后缀表达式就是:ab+ab+ab+ ,
(a+b)∗c−(a+b)/e(a+b)*c-(a+b)/e(a+b)c(a+b)/e的后缀表达式为: ab+c∗ab+e/−ab+c*ab+e/-ab+cab+e/ 这样做有什么好处?
我们可以通过使用两个栈(一个存储数值 q1q_1q

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值