.
数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式<C++代...
理论:
〔这部分很重要,看明白了,可以写出实现算法
表达式的表示形式有中缀、前缀和后缀 3 中形式。中缀表达式按操
作符的优先级进行计算〔后面代码实现只包括+、-、*、\,小括号,即数
学运算。后缀表达式中只有操作数和操作符。操作符在两个操作数之后。
它的计算规则非常简单,严格按照从左到右的次序依次执行每一个操
作。每遇到一个操作符,就将前面的两个数执行相应的操作。
由后缀表达式计算中缀表达式原理:计算机处理后缀表达式求值问
题是比较方便的,即将遇到的操作数暂存于一个操作数栈中,凡是遇到操
作数,便从栈中 pop 出两个操作数,并将结果存于操作数栈中,直到对后
缀表达式中最后一个操作数处理完,最后压入栈中的数就是后最表达式
的计算结果。
中缀表达式转换为等价的后缀表达式
中缀表达式不方便与计算机处理,通常要讲中缀表达式转换为一个
与之等价的后缀表达式。等价是指两个表达式的计算顺序和计算结果完
全相同。
中缀表达式:0.3/<5*2+1>#
的等价后缀表达式是:0.3 5 2 * 1 + /#
仔细观察这两个等价的表达式可知,操作数的出现次序是相同的,但
运算符的出现次序是不同的。在后缀表达式中,运算符的出现次序是实
际进行操作的次序;在中追表达式中,由于受到操作符的优先级和括号
的影响,操作符出现次序与实际进行操作的次序很可能是不一样的。
1 / 9