【软考】后缀式

本文详细介绍了如何将中缀表达式转换为后缀表达式,并通过具体实例解析了使用栈来处理后缀表达式的步骤。理解后缀式有助于深入掌握计算机科学中的表达式求值方法。

后缀式又称逆波兰式,其实他就是一种表达方式。后缀式把运算符写在运算对象的后面,好处是不用借助括号,根据运算对象和运算符出现的顺序运算就好了。

 

举个例子:

x-(y+c)*8的后缀式 怎么算

这个式子先算  y+c 所以  换成后缀式 yc+

然后这个结果 *8 换成后缀式就是 的结果 加上 8*

(y+c)*8的后缀式 就是 yc+8*

x- 的结果 ,后缀式就是 x加上的结果加上,即xyc+8*-

 

 

后缀式是用栈来存储的,为什么呢

 

看这张图




栈中先放了 y  c  ,然后 号来了, y  c 从栈中出来, 进行运算c+y

②然后把结果再放回栈中

 8 也放入栈中

 这时候*号来了

 8  c+y 的结果 被拿出来 运算 c+y* 8 ,然后把 结果放回到栈中

x也放入栈中

 号来了

c+y* 8的结果和被拿出来 运算 x-c+y* 8

 

这就是这个运算的过程,并不难,画个图看看就好了

提供的引用中未提及中级件设计师试中关于逆波兰的相关内容。逆波兰,也称为后缀表达,是一种将运算符置于操作数之后的数学表达表示方法。在计算机科学中,逆波兰常用于编译器设计、计算器实现等领域。 逆波兰的主要优点是不需要括号来表示运算的优先级,计算过程可以按照运算符出现的顺序依次进行,便于计算机进行处理。例如,中缀表达 `(3 + 4) * 5` 对应的逆波兰是 `3 4 + 5 *`。 在中级件设计师试中,逆波兰相关的点可能包括: - **逆波兰的转换**:将中缀表达转换为逆波兰,或者将逆波兰转换为中缀表达。 - **逆波兰的计算**:根据逆波兰进行表达的计算。 - **逆波兰在栈结构中的应用**:由于逆波兰的计算过程通常使用栈来实现,因此可能会察栈的操作和逆波兰计算的结合。 以下是一个将中缀表达转换为逆波兰的 Python 代码示例: ```python def infix_to_postfix(expression): precedence = {'+': 1, '-': 1, '*': 2, '/': 2} output = [] operator_stack = [] tokens = expression.split() for token in tokens: if token.isdigit(): output.append(token) elif token in '+-*/': while (operator_stack and operator_stack[-1] in '+-*/' and precedence[operator_stack[-1]] >= precedence[token]): output.append(operator_stack.pop()) operator_stack.append(token) elif token == '(': operator_stack.append(token) elif token == ')': while operator_stack and operator_stack[-1] != '(': output.append(operator_stack.pop()) operator_stack.pop() # 弹出左括号 while operator_stack: output.append(operator_stack.pop()) return ' '.join(output) # 示例 infix_expression = "( 3 + 4 ) * 5" postfix_expression = infix_to_postfix(infix_expression) print(postfix_expression) # 输出: 3 4 + 5 * ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值