中缀表达式转后缀表达式算法思想
算法:
中缀表达式转后缀表达式的方法:
1.遇到操作数:直接输出(添加到后缀表达式中)
2.栈为空时,遇到运算符,直接入栈
3.遇到左括号:将其入栈
4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。
5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈
6.最终将栈中的元素依次出栈,输出。
例如
a+bc+(de+f)g ----> abc+def+g+
遇到a:直接输出:
后缀表达式:a
堆栈:空
遇到+:堆栈:空,所以+入栈
后缀表达式:a
堆栈:+
遇到b: 直接输出
后缀表达式:ab
堆栈:+
遇到*:堆栈非空,但是+的优先级不高于*,所以入栈
后缀表达式: ab
堆栈:+
遇到c:直接输出
后缀表达式:abc
堆栈:+
遇到+:堆栈非空,堆栈中的优先级大于+,输出并出栈,堆栈中的+优先级等于+,输出并出栈,然后再将该运算符(+)入栈
后缀表达式:abc*+
堆栈:+
遇到(:直接入栈
后缀表达式:abc*+
堆栈:(+
遇到d:输出
后缀表达式:abc*+d
堆栈:(+
遇到*:堆栈非空,堆栈中的(优先级小于*,所以不出栈
后缀表达式:abc*+d
堆栈:(+
遇到e:输出
后缀表达式:abc+de
堆栈:(+
遇到+:由于的优先级大于+,输出并出栈,但是(的优先级低于+,所以将出栈,+入栈
后缀表达式:abc+de*
堆栈:+(+
遇到f:输出
后缀表达式:abc*+def
堆栈:+(+
遇到):执行出栈并输出元素,直到弹出左括号,所括号不输出
后缀表达式:abc+def+
堆栈:+
遇到:堆栈为空,入栈
后缀表达式: abc*+def+
堆栈:+
遇到g:输出
后缀表达式:abc*+def+g
堆栈:+
遇到中缀表达式结束:弹出所有的运算符并输出
后缀表达式:abc*+def+g+
堆栈:空
中缀表达式转后缀表达式算法思想相关推荐
- java中缀表达式转后缀表达式(逆波兰算法)
四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等 ...
- 【数据结构与算法】【12】前缀表达式、中缀表达式、后缀表达式
什么是前缀表达式.中缀表达式.后缀表达式 前缀表达式.中缀表达式.后缀表达式,是通过树来存储和计算表达式的三种不同方式 以如下公式为例 (a+(b−c))∗d( a+(b-c) )*d(a+(b−c) ...
- 利用stack结构,将中缀表达式转换为后缀表达式并求值的算法实现
#!/usr/bin/env python # -*- coding: utf-8 -*-# learn <<Problem Solving with Algorithms and Dat ...
- 前缀表达式、中缀表达式、后缀表达式的区别
一.三者的概念(参考维基百科) 1.1中缀表达式 中缀表达式是符合人类直觉的一种表达方式,其特点是操作符(二元操作符)在中间,操作数在两侧. 例如 3 + 4 , 5 - 6 * 7, ( ...
- java中缀表达式转后缀表达式_数据结构Java实现06----中缀表达式转换为后缀表达式...
本文主要内容: 表达式的三种形式 中缀表达式与后缀表达式转换算法 一.表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3.我们从小做数学题时,一直使用的就是中缀表达式. 后 ...
- 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)
[0]README 0.1) 本文旨在总结 中缀表达式转后缀表达式并计算后缀表达式的值 的步骤,并给出源代码实现: 0.2) 本文中涉及到的源代码均为原创,是对中缀转后缀和计算后缀的简单实现,(旨在理 ...
- 中缀表达式到前缀表达式和后缀表达式
1.算法思路 转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈. ...
- java利用栈求复杂表达式_java中的栈Stack的基本使用和应用(二) ——利用栈计算合法的算术表达,中缀表达式转后缀表达式...
利用栈Stack计算合法的算术表达式 限定的算术表达式求值问题:包含 "+"."-"."*"."/" .正整数和圆括号的 ...
- 《数据结构》:中缀表达式转后缀表达式 后缀表达式的计算
目录 一.基本概念 二.中缀表达式转后缀表达式 例 中缀表达式 2*(3+5)+7/1-4 转换为后缀表达式 三.后缀表达式的计算 例 后缀表达式 2 3 5 + * 7 ...
最新文章
- [bzoj2815] [洛谷P2597] [ZJOI2012] 灾难
- 一台机器上运行多个ActiveMq
- 2684亿销售额背后的阿里AI技术
- 三极管工作原理_三极管的基本工作原理,这个讲的很全
- Ubuntu下pycharm无法输入中文
- [转]使用ThinkPHP框架快速开发网站(多图)
- 使用Xdebug调试和优化PHP程序[3]
- c语言入门ppt演示,c语言学习ppt-C语言入门教程ppt(共434页)免费版【精品课件】-东坡下载...
- 火爆全网的 “蚂蚁牙黑” 特效 今天你也可以做。
- Redis - Redis分布式算法原理——Hash一致性理解 Hash倾斜性解决方案
- IOS 地图导航(其中包括苹果地图、百度地图、高德地图、谷歌地图)
- 夏普Sharp SF-S751D 一体机驱动
- 苹果手机如何关闭自动续费_手机APP会员自动续费怎么办?教你一招快速关闭!...
- 接上一篇Trao文本行数及省略号问题
- 电视剧中一看就崩溃的镜头
- Python 竟然不是最赚钱的编程语言?!
- SQL Server 安装:以前的某个程序安装已在安装计算机上创建挂起的文件操作
- MySQL 数据导入
- ieee会议论文从手稿到发表
- 等级保护测评2.0 mysql 数据库