前缀、中缀、后缀表达式(WORD文档)

本文介绍了前缀、后缀及中缀三种不同的算术表达式表示方法,包括各自的定义与示例。前缀表达式将运算符置于操作数之前,后缀表达式则置于之后,而中缀表达式为日常使用的形式。
前缀表达式就是不含括号的算术表达式,而且它是将运算符写在前面,操作数写在后面的表达式,也称为“波兰式”。
例如,- 1 + 2 3,它等价于1-(2+3)。


 后缀表达式:
不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)
如:2 1 + 3 *,即(2 + 1) * 3

中缀表达式(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4)。
中缀表达式是人们常用的算术表示方法。

下载文档:
### 前缀表达式处理技巧 前缀表达式又称波兰表达式,运算符位于操作数之前,如(3 + 4) X 5 - 6 对应的前缀表达式是 - X + 3 4 5 6。计算前缀表达式时,从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果 [^1][^4]。 ### 中缀表达式处理技巧 中缀表达式是常见的运算表达式,运算符在操作数中间。中缀表达式转前缀后缀表达式是常见操作。转前缀表达式时,一般需要借助栈来实现,通常是先将中缀表达式逆序,再处理运算符的优先级等规则。转后缀表达式时,可使用栈保存运算符,从左到右扫描中缀表达式,遇到操作数直接输出,遇到运算符,若栈为空或栈顶为左括号则直接入栈,若运算符优先级高于栈顶运算符则入栈,否则将栈顶运算符弹出输出,直到满足入栈条件,遇到左括号入栈,遇到右括号则将栈顶元素依次弹出输出直到遇到左括号 [^1][^3]。 ### 后缀表达式处理技巧 后缀表达式又称逆波兰表达式。计算后缀表达式时,从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素和栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。例如后缀表达式“3 4 + 5 * 6 -”的计算过程就是按照此规则进行 [^1][^4]。 以下是一个计算后缀表达式的代码示例: ```python def cal_post(str): stack = [] i = 0 while i < len(str): if str[i].isdigit() or (str[i] == '-' and str[i + 1].isdigit()): num_str = "" if str[i] == '-': num_str += str[i] i += 1 while i < len(str) and (str[i].isdigit() or str[i] == '.'): num_str += str[i] i += 1 stack.append(float(num_str)) elif str[i] in ('+', '-', '*', '/'): b = stack.pop() a = stack.pop() if str[i] == '+': stack.append(a + b) elif str[i] == '-': stack.append(a - b) elif str[i] == '*': stack.append(a * b) elif str[i] == '/': stack.append(a / b) i += 1 elif str[i] == ' ': i += 1 return stack.pop() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值