前缀式中缀式后缀式笔记

                                  缀式的相互转换

1.先了解什么事是前缀式,中缀式,后缀式
定义:这三种表达式其实就是算术表达式的三种写法,以 3+4-5为例
  前缀式: 操作符在操作数前面 3+(4-5) -> +3-45(没有括号就3+4-5 前缀式:+-345 这样算结果不对,百度下,还是不太清楚)(可能是同等级优先级是要加一个括号括起来呢)
  中缀式: 操作符在操作数中间 3+4-5 ->平常我们所熟悉的运算表达式
  后缀式: 操作符在操作数后面 34+5- ->计算机计算就是用后缀式(不唯一)

2.中缀式转换为后缀式(计算机运算实现)
  3+4-5
  定义两个栈:符号栈(存放操作符),数字栈(存放数字和运算结果).
  
  符号栈:定义运算符号的优先级,这个可以设置一个int类型变量实现
         +,-定义优先级最低
     *,/,% 定义优先级次低
         ^ 定义优先级最高
     
         
         中缀式转换为后缀式只要一个符号栈就可以了,数字栈是解释计算机工作原理的,
     算数表达式是要String类型,String类型转换为char数组

     符号栈的进栈出栈规律:1.当遍历数组的时候遇到数字字符,则直接保存
                  2.当遇到符号字符时:当栈空是就直接进栈;否则就判断栈顶的运算符的优先级是否小于要进栈的符号
                            (记住是小于,等于或是大于都不行)
                              3.当栈顶符号优先级大于要进栈符号,则栈顶符号出栈,出栈符号保存,当下一个栈顶符号还是
                    优先级大于要进栈元素,则继续栈顶出栈,保存栈顶符号,直到要进栈符号满足进栈要求进栈为止
                              4.当进栈符号是左括号(时直接进栈
                  5.当进栈符号是右括号)时,一直出栈,知道遇到符号是左括号为止,出栈符号保存,左括号出栈不保存
                  6.当遍历完数组的时候就出栈所有符号,保存

                  3+4-5+(4*1)进栈过程 -> 保存使用StringBuffer s来,符号找用f来表示
                  
                  1.遍历时遇到数字直接保存
                                s = 3,f = 空
                  2.遍历时遇到符号字符+号
                    这时符号栈为空,直接进栈
                s = 3,f = +
                  3.遍历时遇到数字直接保存
      

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值