PKU数据结构与算法Python版--习题总结(5)--中缀表达式转后缀表达式

这篇博客主要介绍了如何将中缀表达式转换为后缀表达式,探讨了表达式的相关定义,包括中缀、前缀和后缀表达式的特点,并提供了代码实现的分析和具体转换方法。
摘要由CSDN通过智能技术生成

1、题目

给定一个中缀表达式转换为后缀表达式。
注意:
1.操作数和操作符之间由空格隔开【中缀表达式是一系列以空格隔开的单词(token)组成】.
2.操作数既可以是数字也可以是英文大写字母

2、表达式的相关定义

中缀表达式:操作符介于操作数之间。为保证运算顺序,引入了操作符的优先级以及括号强制优先级。

全括号中缀表达式:中缀表达式中所有的子表达式都加上括号。为保证运算顺序,只需要括号强制优先级

前缀表达式:操作符与操作数分别集中分布,而且操作符集体位于操作数之前。为保证运算顺序,只需规定操作符只和它后面紧跟的两个数进行运算,不需要操作符以及括号优先级。

后缀表达式:操作符与操作数分别集中分布,而且操作符集体位于操作数之后。为保证运算顺序,只需规定操作符只和它前面紧跟的两个数进行运算,不需要操作符以及括号优先级。

3、表达式的转换【通用,但是此题解法不涉及该转换方法】

中缀表达式转前缀表达式:把每一个子表达式的左括号代替为此表达式的运算符,并删去原位置的运算符和右括号

中缀表达式转后缀表达式:把每一个子表达式的右括号代替为此表达式的运算符,并删去原位置的运算符和左括号

4、代码实现的分析

对象 相应处理
操作数 因为几种表达式中操作数的顺序不变,因而直接存储到待输出列表即可
操作符 + * - / ^ 1.中缀表达式的操作符顺序和后缀表达式的操作符顺序相反,因而采用来存储操作符。2.后缀表达式的操作符先后顺序代表了操作符的优先级顺序,因而在操作符入栈之前需要比较和栈顶操作符的优先级。
括号() 左括号直接入栈,遇到右括号时一直pop栈顶元素加入待输出列表,直至pop到了左括号。原因是括号内的操作符优先级要高于括号外的

5、代码

#栈的实现(利用列表)
class Stack:
    def __init__(self):
        self.items=[]
    def isEmpty(self):
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值