由中缀式转化为后缀式

比如: 10+(18+9*3)/ 15 - 6

步骤如下:

  首先初始化两个栈,S1,S2;S1存操作数,S2存运算符,然后从左到右扫描,

  1.遇到( ,直接进栈 ,遇到 ) 时,把S2中的操作数一直到 ( 之前 ,都存入 S1,

  2. 遇到 + — * / 时,如果当前的算符优先级小于S2中的优先级的话,就压入S1中

 

  S1:10 18  9  3

  S2:+ (  +  *

  这时遇到右括号:

  S1:10 18 9 3 * +

  S2:+ 

 

  S1:10 18 9 3 * + 15 

  s2:+  /

 

  S1:10 18 9 3 * + 15 / +6

  S2:—  

  

  S1:10 18 9 3 * + 15 / + 6 —

  S2:

 

到此结束。

转载于:https://www.cnblogs.com/zhanglanyun/archive/2012/08/31/2665946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中缀表达转化后缀表达的步骤如下: 1. 初始化一个空栈和一个空后缀表达。 2. 从左到右扫描中缀表达的每个元素。 3. 如果当前元素是操作数,则将其添加到后缀表达的末尾。 4. 如果当前元素是左括号,则将其压入栈中。 5. 如果当前元素是右括号,则将栈中的元素弹出并添加到后缀表达中,直到遇到左括号。左括号不会被添加到后缀表达中,也不会被弹出。 6. 如果当前元素是运算符,则比较其与栈顶运算符的优先级。如果当前运算符的优先级小于或等于栈顶运算符的优先级,则将栈顶运算符弹出并添加到后缀表达中,直到当前运算符的优先级大于栈顶运算符的优先级或栈为空,然后将当前运算符压入栈中。 7. 重复步骤2至6,直到扫描完整个中缀表达。 8. 如果栈中还有元素,则将它们依次弹出并添加到后缀表达中。 例如,将中缀表达 - + 6 * 3 - 7 4 / 8 2 转化后缀表达的过程如下: - 首先,初始化一个空栈和一个空后缀表达。 - 从左到右扫描中缀表达的每个元素: - 第一个元素是减号,是运算符,将其压入栈中。 - 第二个元素是加号,是运算符,由于栈为空,将其压入栈中。 - 第三个元素是数字6,是操作数,将其添加到后缀表达的末尾。 - 第四个元素是乘号,是运算符,将其压入栈中。 - 第五个元素是数字3,是操作数,将其添加到后缀表达的末尾。 - 第六个元素是减号,是运算符,将其压入栈中。 - 第七个元素是数字7,是操作数,将其添加到后缀表达的末尾。 - 第八个元素是数字4,是操作数,将其添加到后缀表达的末尾。 - 第九个元素是除号,是运算符,将其压入栈中。 - 第十个元素是数字8,是操作数,将其添加到后缀表达的末尾。 - 第十一个元素是数字2,是操作数,将其添加到后缀表达的末尾。 - 扫描完整个中缀表达后,栈中还有运算符,将其依次弹出并添加到后缀表达中,得到后缀表达 6 3 * 7 4 - + 8 2 / -。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值