中缀表达式转后缀表达式并计算、判断中缀表达式是否合法

本文介绍了如何将中缀表达式转换为后缀表达式,并讲解了判断中缀表达式是否合法的方法。通过运算符优先级和栈操作,详细阐述了转换过程,如示例1+2*(9-3)+6/2的转换步骤。
摘要由CSDN通过智能技术生成

中缀转后缀思想:
运算符的优先级:

运算符 级别(数字越大优先级越高)
1
+、- 2
*、/ 3
4

扫描字符串,如果字符串是0~9的数字,添加到结果字符串中,如果是运算符,则进行一下判断:(运算符栈mvstack,结果字符串res)

  1. 如果运算符是‘+’、‘-’,‘*’,‘/’,
    mvstack为空,直接加进栈内,
    mvstack不为空。将栈内所有比带加入运算符的等级低或相等的运算符一个一个出栈 加入到结果字符串res中。然后将带加入字符串入栈
  2. 如果运算符是‘(’,直接入mystack。
  3. 如果运算符是‘)’。mvstack栈中一个一个输出运算符‘(’前面所有的运算符,加入到结果字符串res中。‘(’和‘)’不入栈,也不入运算符字符串。
  4. 最后输出栈中所有剩余字符串。

eg:1+2*(9-3)+6/2
初始化:string res=“”;stack<char> mvstack;string str=“1+2*(9-3)+6/2”;
str[0]=1,res=1
str[1]=+,mvs

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值