中序表达式转后序表达式

news/2024/11/24 6:43:21/

什么是中序表达式

中序表达式就是我们日常使用的算术表达式,也称为中缀表达式。它的主要特点是操作符位于两个操作数之间,并且通常需要括号来改变运算的优先级

例如

3 + 4 × ( 5 + 6) - 8 / 2

什么是后序表达式

后序表达式,也被称为后缀表达式或逆波兰表示法(Reverse Polish notation,RPN),是一种算术表达式的书写方式,其中操作符位于其操作数之后。

例如

将 中序表达式 (1+4)×3+10/5 转后序表达式 1 4 + 3 * 10 5 / +

算法实现

class Stack:def __init__(self):self.items = []def isEmpty(self):return len(self.items) == 0def push(self,item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[len(self.items) - 1]def size(self):return len(self.items)

先定义好一个栈后续需要用到这个数据结构

import string
def infixToPostfix(infixexpr):prec = {}prec['*'] = 3prec["/"] = 3prec["+"] = 2prec["-"] = 2prec["("] = 1opStack = Stack()postfixList = []tokenList = infixexpr.split() # 切分空格for token in tokenList:if token in string.ascii_uppercase:postfixList.append(token)elif token == '(':opStack.push(token)elif token == ')':topToken = opStack.pop()while topToken != '(':postfixList.append(topToken)topToken = opStack.pop()else:while (not opStack.isEmpty()) and (prec[opStack.peek()] >= prec[token]):postfixList.append(opStack.pop())opStack.push(token)while not opStack.isEmpty():postfixList.append(opStack.pop())return " ".join(postfixList)

结果输出

infixToPostfix("( A + B ) * ( C + D )")'A B + C D + *'


http://www.ppmy.cn/news/1549470.html

相关文章

C0029.在Clion中解决Debug时,提示Process finished with exit code -1的错误

1.错误提示 Process finished with exit code -12.解决办法 如上在使用Debug进行代码调试时,直接出现如上报错,解决办法就是直接点击运行程序,即可查出报错编号,然后根据报错编号来查找问题; 然后在网上就可以根据该…

常用服务器运维软件之 WGCLOUD(国产)介绍

WGCLOUD是一款免费开源的运维监控软件,轻量高效,部署方便,上手简单,界面简单流畅 WGCLOUD是国产运维软件,可以适配大部分的信创环境,比如麒麟、统信等操作系统 WGCLOUD具体支持监控的操作系统如下&#x…

html本地离线引入vant和vue2(详细步骤)

需求:要在html中引入vant和vue2,并且是本地离线包引入,非cdn 1.效果 2.下载对应的文件 2.1下载vue2 点击如下地址: vue2版本下载地址 打开后如下图所示,之后 ctrlA 再ctrlc复制, 之后创建文件vue.js空白文件&#x…

[ 渗透测试面试篇-2 ] 针对大规模资产的攻击思路

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

基于Java Springboot发艺美发店管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

一键AI换脸软件,支持表情控制,唇形同步Facefusion-3.0.0发布!支持N卡和CPU,一键启动包

嗨,小伙伴们!还记得小编之前介绍的FaceFusion 2.6.1吗?今天给大家带来超级exciting的消息 —— FaceFusion 3.0.0闪亮登场啦! 🌟 3.0.0版本更新 🏗️ 全面重构:修复了不少小虫子,运行更稳定,再也不怕突然罢工啦! 😀 Live Portrait功能:新增…

大数据基于Spring Boot的化妆品推荐系统的设计与实现

摘 要 随着大数据时代的到来,人们对于个性化服务的需求越来越高。化妆品推荐系统作为一个认知智能模型段,在为消费者提供更好的购物体验方面发挥了重要作用。本研究基于大数据技术设计了一个高效准确的化妆品推荐系统。通过对海量数据的分析和处理&…

vue3项目部署在阿里云轻量应用服务器上

文章目录 概要整体部署流程技术细节小结 概要 vue3前端项目部署在阿里云轻量服务器 整体部署流程 首先有一个Vue3前端项目和阿里云应用服务器 确保环境准备 如果是新的服务器,在服务器内运行以下命令更新软件包 sudo apt update && sudo apt upgrade -y …