[数据结构考前必看]中缀表达式转化成后缀表达式_例题超多+分步骤讲解+带你手算

中缀、后缀表达式定义

  1. 中缀表达式又称波兰式,有利于人们阅读与表达。
  2. 后缀表达式又称逆波兰式,有利于机器进行运算。

例题1:

中缀表达式:(a+b+c*d) /e

  1. 首先让我们来看一下运算符对应的优先级,显然括号里的**“乘法”**的优先级最高,所以先得出cd*,让我们把cd*记为q,括号里的表达式即可转化成a+b+q。
  2. 然后括号里还剩下两个加法,两者的优先级相同,依次读取,a+b首先转化成ab+,接着ab+作为一个新的数,让我们把它记为p,那么括号里的表达式就剩下p+q,转化成后缀表达式,显然是pq+,让我们把它记为r。
  3. 然后表达式就变成了r/e,转化成后缀表达式,显然是re/,好了,此刻我们已经处理完全部表达式了。
  4. 此时表达式为re/,让我们依次将表达式还原,r=pq+、p=ab+、q=cd*,将这些带入,得原表达式=ab+cd*+e/,

OK!得解。

这时候,就会有小朋友提问了,哥哥,哥哥,我算的结果怎么和你不一样,我是不是算错了,你看我的结果是abcd*++e/。
好的,首先恭喜你,你学会解这道题目,你的结果也是对的。
我们需要明确一个非常重要的概念中缀转后缀的结果并不唯一
后缀表达式只是一种工具,我们寄希望于计算机通过这种工具能正确计算出表达式。

计算机处理后缀表达式的方式是:

从左向右依次扫描表达式,
(1)遇到操作数人栈,
(2)遇到操作符.则做出栈两次,获得两个操作数,
后出栈的操作数为第一个操作对象,对它们进行计算,
计算结果作为下次运算的操作数入栈。
重复上述操作,直到后缀表达式读取结束,既可完成表达式的计算。

表达式1:abcd*++e/和表达式2:ab+cd*+e/,两者计算结果是相同的。所以他俩是等价的。


接下来的例题我就不一一书写步骤了,仅提供参考答案(再次提醒答案不唯一)


例题2:

中缀表达式 a+b*(c-d)-e/f
对应转化的后缀表达式 abcd-*+ef/-


例题3:

中缀表达式 A+B*(C-D)-E/F
对应转化的后缀表达式 ABCD-*+EF/-


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章