前缀(波兰表达式)、中缀、后缀(逆波兰表达式)表达式

前缀表达式 (波兰表达式)

1.前缀表达式 是运算符在操作数的前面,如;(3+4)* 7-5化为前缀表达式:-* +3475
2. 求值步骤:

  • 从右往左扫描,数字按照5743的顺序压入栈中
  • 遇到+,弹出两个数(栈顶元素3和次顶元素4),进行运算结果为7,然后将结果7压入栈内
  • 接下来遇到 * 弹出最上面的两个元素7和7,运算,结果为7* 7为49,将49压入栈内。
  • 最后运算- ,弹出两个数,49和5,相减,为44。后将44压入栈内,即为最终结果

特征:
1、符号在前,数在在后
2、符号从右向左读取,即为运算顺序
3、数字从左往右读取,

中缀表达式

  1. 中缀表达式常见的运算表达式,为(3+4)* 7 - 5
  2. 求值步骤见上一篇

特征:
1、常见的形式,符号与数值的交织运算

后缀表达式(逆波兰表达式)

  1. 后缀表达式又称之为逆波兰表达式,与前缀表达式相似,仅仅只是运算符位于操作数后面
  2. 举例说明:(3 + 4)* 7 - 5 对应的后缀表达式为:34+7* 5-
  3. 求值方式:
  • 与前缀表达式相反,从左到右扫描
  • 遇到数字时,将数字压入栈内,将34压入栈内
  • 遇到符号时弹出栈顶的两个数,用运算符对他们做相应的计算,将结果压入栈内,遇到+,弹出3和4,3+ 4结果为7,将7压入栈内,遇到5,再将5压入栈内,遇到* 再弹出5和7,做运算,为35,在遇到5,压入栈内,在遇到-,弹出两个数做运算35-5,结果为30
  • 重复操作直到最右端
发布了19 篇原创文章 · 获赞 3 · 访问量 617

猜你喜欢

转载自blog.csdn.net/Blackoutdragon/article/details/103833173