中缀表达式和后缀表达式

在这里插入图片描述

文章目录

  • 1.中缀表达式
    • 1.1 什么是中缀表达式
    • 1.2 中缀表达式 ------> 后缀表达式
  • 2.后缀表达式
    • 2.1 什么是后缀表达式
    • 2.2 后缀表达式 ------> 中缀表达式

1.中缀表达式

1.1 什么是中缀表达式

我们日常用的就是中缀表达式,如:(9+(10-6)*4)/ 5

1.2 中缀表达式 ------> 后缀表达式

转换规则:

1.创建运算符栈s和操作数数组a,然后扫描中缀表达式

2.如果是操作数,直接放入数组中

3.如果是运算符,①栈s为空 || ②栈顶元素为左括号 || ③优先级:栈顶>当前 ,满足这三个条件,当前元素入栈;
否则,弹出栈中元素

4.如果是左括号,直接入栈;如果是右括号,依次弹出左括号上面的元素并放入数组a中

5.循环步骤2-4,直至扫描结束,将栈s中剩余元素依次全部弹出并放入数组a中,数组a就是后缀表达式

中缀表达式和后缀表达式_第1张图片

2.后缀表达式

2.1 什么是后缀表达式

后缀表达式,也称逆波兰式,指运算符处于两操作数后面。如: 13 * ((3 + 8) * 4),后缀表达式为 13 3 8 + 4 * *

2.2 后缀表达式 ------> 中缀表达式

转换规则:

1.创建一个栈s,从左向右依次扫描后缀表达式

2.如果是操作数,入栈

3.如果是运算符,依次弹出栈顶的两个元素,使用运算符进行计算(这里需要注意-/),然后将结果入栈
(需要注意-/:操作数的顺序不同,运算结果不同。为了不出错,可以统一将先出栈的元素往后放,比如,栈顶元素3,下面是1,操作符是-,那么表达式就为:1-34.重复步骤23,直至扫描结束,最后弹出栈顶元素就是表达式的最终结果

中缀表达式和后缀表达式_第2张图片

你可能感兴趣的:(代码随想录刷题,数据结构)