(中缀)表达式转换成前缀表达式、后缀表达式
认识前缀、中缀、后缀表达式:
一般我们平时用的计算式都是中缀表达式,因为符号都是在操作数的中间的。相对应的符号在操作数后面的就叫后缀表达式(也称逆波兰式),符号在操作数前面的就叫前缀表达式(也称波兰式)。
为什么要把中缀表达式转化为后缀,前缀?
计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。
计算机如何计算后缀,前缀表达式?
计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。
计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。
中缀表达式转换成前缀表达式
(1)构建两个栈,一个存运算符一个存操作数。运算符(以括号分界点)在栈内遵循越往栈顶优先级不降低的原则进行排列。
(2)从右至左扫描中缀表达式,从右边第一个字符开始判断:
如果当前字符是数字,则分配到数字串的结尾并将数字串直接输出。
如果是运算符,则比较优先级。如果当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),则将运算符直接入栈;否则将栈顶运算符出栈并输出,直到当前运算符的优先级大于等于栈顶运算符的优先级(当栈顶是括号时,直接入栈),再将当前运算符入栈。如果是括号,则根据括号的方向进行处理。如果是右括号,则直接入栈;否则,遇右括号前将所有的运算符全部出栈并输出,遇右括号后将左右的两括号一起删除。
(3) 重复上述操作(2)直至扫描结束,将栈内剩余运算符全部出栈并输出,再逆缀输出字符串。中缀表达式也就转换为前缀表达式了。
中缀表达式转换成后缀表达式
和中缀表达式转换成前缀表达式相似
参考:
前缀—中缀–后缀 表达式的相互转换 https://blog.csdn.net/linsheng9731/article/details/23125353
表达式转化(中缀,后缀,前缀) https://www.cnblogs.com/nzbbody/p/3335226.html
将中缀表达式转换成后缀表达式 https://www.cnblogs.com/chenjiafeng/p/5328578.html
前缀、中缀、后缀表达式及中缀转后缀表达式 https://blog.csdn.net/kobe_jr/article/details/80377836
(中缀)表达式转换成前缀表达式、后缀表达式相关推荐
- 中缀表达式转换成前缀表达式和后缀表达式的极其简单方法
35,15,+,80,70,-,*,20,/ //后缀表达方式 (((35+15)*(80-70))/20)=25 //中缀表达方式 /,*,+,35,15,-,80,70, 20 //前缀表达方式 ...
- 中缀表达式转换成前缀表达式和后缀表达式
35,15,+,80,70,-,*,20,/ //后缀表达方式 (((35+15)*(80-70))/20)=25 //中缀表达方式 /,*,+,35,15,-,80,70, 20 //前缀表达方式 ...
- 数学表达式转换成python_简单数学表达式_清华尹成python入门教程_少儿编程视频-51CTO学院...
此课程与<清华编程高手.尹成.带你实战python入门>大体相同,只需购买其中的一门课程. 本课程由清华大学尹成老师录制,课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术.py ...
- 中缀表达式转换为前缀及后缀表达式并求值【摘】
它们都是对表达式的记法,因此也被称为前缀记法.中缀记法和后缀记法.它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前:中缀和后缀同理. 举例: (3 + 4) ...
- 中缀表达式转换成逆波兰式
栈的应用:中缀表达式转换成逆波兰式 小白前来报道!懒癌患者的第一篇博客,实属不易,先为自己鼓个掌. 编写程序,将任意一个合法的中缀表达式转换成逆波兰式. [问题描述]表达式计算是实现程序设计语言的基本 ...
- c语言表达式的后缀,中缀表达式转换成后缀表达式C语言程序(一)
逆波兰表达式(Reverse Polish Notation)又叫后缀表达式.它是一种非常的表达式,可以将复杂的表达式转换成可以依靠简单的操作得到结果的表达.下面这段C语言即是用于实现将中缀表达式转换 ...
- Java 将中缀表达式转换成后缀表达式
使用堆栈进行表达式的堆栈将中缀(Infix)表达式转换成后缀(postfix)表达式 完整代码 import java.io.IOException;public class InToPost {pr ...
- 使用栈实现中缀表达式转换成后缀表达式并计算结果(逆波兰计算器)
一.中缀表达式转换成后缀表达式 具体步骤如下: 1.初始化栈stack(暂时存放运算符)以及集合list(存放后缀表达式) 2.从左向右扫描中缀表达式 3.当前元素为数字时,直接添加到list中 4. ...
- 前缀、中缀和后缀表达式详解,中缀表达式到后缀表达式的转换规则,以及后缀表达式的计算规则,附计算代码
1. 中缀.前缀和后缀表达式 1.1 中缀表达式 首先,中缀表达式的这个"缀"指运算符在两个操作数的位置.中缀表达式其实就是我们常用的算术表达式,比如 2 + 9 - (32 * ...
最新文章
- android textview参差不齐,android textView 排版显示参差不齐的解决方法
- 亚马逊生鲜的产品质疑!国外设计师怎么分析用户体验(中英图文对照版)
- Spring+SpringMVC +MyBatis整合配置文件案例66666
- java 有选择的查询_如何在Java中将准备好的语句用于选择查询?
- learn python app v3_App Store 上的“Learn Python and Scratch”
- Qt工作笔记-moc的认识
- efficientnet-yolo3-tf2的实现
- el-input输入值无法在输入框显示
- session是什么,存储在哪里
- SpringCloud与Ribbon整合的时候是如何提供RestTemplate负载均衡功能?
- audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等
- android数据线接口定义,数据线接口种类(手机数据线原来还有这几种!)
- 基于node+mysql的微信商城小程序全栈系统(vue后台管理系统+微信小程序+node服务端)
- TLE 生成 Cesium CZML 卫星轨道数据
- python flask后台框架_利用python实现后端写网页(flask框架)
- 120550-35-8,Biotin-PFP ester生物素-五氟苯酯与伯氨基(-NH2)反应
- 第三章 迭代器(iterators)概念与traits编程技法
- 【OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 | 渲染前不设置单位阵 | 压栈出栈原理分析 | 代码示例 )
- java orm设计_大搜车orm框架设计思路
- 高性能TcpServer(C#) - 3.命令通道(处理:掉包,粘包,垃圾包)