中缀转后缀表达式 并 计算——全都是用栈处理的O(∩_∩)O

1. 中缀表达式转后缀表达式

① 两条基本规则: (1)数字无条件输出

                             (2)符号进栈进行相应处理

② 符号处理规则:

(简单点记忆就是,只有最强的才能站在高峰,不够强的,原先的大佬们就要跑路了,携款潜逃偷笑,等大佬都跑光了,才能压制住手下一帮小弟偷笑

    (1)当前符号的优先级 大于 栈顶符号的优先级时, 当前符号压栈

            例:当前符号 * ,栈顶符号 + ,压栈

                

压栈后栈的情况
 
*(栈顶)
+(原栈顶)

    (2)当前符号的优先级 于等于 栈顶符号的优先级时,先将栈中元素弹出,直到当前栈顶的优先级 小于 待处理的符号的优先级。输入待处理符号为  -  

优先级关系: * == /     >   + == -

原来的栈 h后来的栈
*
 
+

-

③ 括号处理

    (1) 左括号  (   无条件压栈;

    (2)右括号      从栈顶开始向下逐个匹配左括号,匹配到了就将这一对括号之间的所有符号依次出栈。

④ 其他的补充:



2. 后缀表达式的计算

上述的处理将后缀表达式存储在一个数组当中。

规则:从左到右地扫描,

    (1)操作数(数字)无条件压栈

    (2)遇到操作码(符号)则从栈里弹出两个数字(先弹出的是第二操作数,后弹出的是第一操作数)

因为除法会产生小数,最好用浮点数的形式存储操作数。

(代码还没撸出来,等一下再贴吧( ̄︶ ̄)↗ )

猜你喜欢

转载自blog.csdn.net/weixin_38376691/article/details/80169549
今日推荐