本文主要是介绍表达式求值 ,逆波兰,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
表达式求值
1、中缀表达式转后缀表达式
原因
日常生活中多用 中缀表达式(此处中缀说的是 运算符在运算数中间),这种表达式很容易被人看出逻辑,但是计算机处理数据一般都是从前往后运算,此时如果把中缀表达式 转为 后缀表达式,符合计算机的处理数据规律。
逻辑:
遇见运算数:加入后缀表达式队列
遇见运算符: if:储存的运算符栈空 或者 栈顶元素为 "(" 则:运算符入栈
else if: 运算符为')' 则:运算符出栈加入队列,直到遇见 ')',停止出栈,并且弹出 ')' 删除掉.
else if:运算符优先级小于栈顶运算符优先级 则:运算符入栈。
else if:运算符优先级大于等于栈顶运算符优先级 则:运算符出栈,一直到遇见栈顶优先级大于运算符优先级或者遇见’(‘,’(‘不出栈。
中缀转后缀的动态展示:大家直接看视频:
逆波兰 - 上(中缀表达式 转 后缀表达式)_哔哩哔哩_bilibili
注意事项:
(1)最后要对存储运算符的栈进行判空,如果不空,则弹出栈顶元素一直到栈空。
原因:例如a+b+(c+d)+e:当e入队后,运算符栈中还剩余一个 " + " 没有处理
2、后缀表达式求值
逻辑:
前提 :栈顶元素是a,栈顶元素紧邻的元素是b,操作符用”ob“表示
if :遇见操作数 操作数入栈
if: 遇见操纵符 弹出a,b,计算 b (ob) a ,然后将计算结果返回栈中
当后缀表达式队列空了的时候,栈顶元素就是后缀表达式的值
后缀求值动态演示:
逆波兰 - 下(后缀表达式计算结果)_哔哩哔哩_bilibili
这篇关于表达式求值 ,逆波兰的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!