算法:
中缀表达式转后缀表达式的方法:
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+
堆栈:空

中缀表达式转后缀表达式算法思想相关推荐

  1. java中缀表达式转后缀表达式(逆波兰算法)

    四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式 数字直接输出为后缀表达式一部分 如果是符号,则判断与栈顶元素的优先级 高于栈顶元素优先级直接入栈 低于或等 ...

  2. 【数据结构与算法】【12】前缀表达式、中缀表达式、后缀表达式

    什么是前缀表达式.中缀表达式.后缀表达式 前缀表达式.中缀表达式.后缀表达式,是通过树来存储和计算表达式的三种不同方式 以如下公式为例 (a+(b−c))∗d( a+(b-c) )*d(a+(b−c) ...

  3. 利用stack结构,将中缀表达式转换为后缀表达式并求值的算法实现

    #!/usr/bin/env python # -*- coding: utf-8 -*-# learn <<Problem Solving with Algorithms and Dat ...

  4. 前缀表达式、中缀表达式、后缀表达式的区别

    一.三者的概念(参考维基百科) 1.1中缀表达式 中缀表达式是符合人类直觉的一种表达方式,其特点是操作符(二元操作符)在中间,操作数在两侧. 例如 3 + 4 ,   5 - 6 * 7,     ( ...

  5. java中缀表达式转后缀表达式_数据结构Java实现06----中缀表达式转换为后缀表达式...

    本文主要内容: 表达式的三种形式 中缀表达式与后缀表达式转换算法 一.表达式的三种形式: 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3.我们从小做数学题时,一直使用的就是中缀表达式. 后 ...

  6. 栈应用(中缀表达式转后缀表达式并计算后缀表达式的值)

    [0]README 0.1) 本文旨在总结 中缀表达式转后缀表达式并计算后缀表达式的值 的步骤,并给出源代码实现: 0.2) 本文中涉及到的源代码均为原创,是对中缀转后缀和计算后缀的简单实现,(旨在理 ...

  7. 中缀表达式到前缀表达式和后缀表达式

    1.算法思路 转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈.     ...

  8. java利用栈求复杂表达式_java中的栈Stack的基本使用和应用(二) ——利用栈计算合法的算术表达,中缀表达式转后缀表达式...

    利用栈Stack计算合法的算术表达式 限定的算术表达式求值问题:包含 "+"."-"."*"."/" .正整数和圆括号的 ...

  9. 《数据结构》:中缀表达式转后缀表达式 后缀表达式的计算

    目录 一.基本概念 二.中缀表达式转后缀表达式 例       中缀表达式  2*(3+5)+7/1-4  转换为后缀表达式 三.后缀表达式的计算 例       后缀表达式  2 3 5 + * 7 ...

最新文章

  1. [bzoj2815] [洛谷P2597] [ZJOI2012] 灾难
  2. 一台机器上运行多个ActiveMq
  3. 2684亿销售额背后的阿里AI技术
  4. 三极管工作原理_三极管的基本工作原理,这个讲的很全
  5. Ubuntu下pycharm无法输入中文
  6. [转]使用ThinkPHP框架快速开发网站(多图)
  7. 使用Xdebug调试和优化PHP程序[3]
  8. c语言入门ppt演示,c语言学习ppt-C语言入门教程ppt(共434页)免费版【精品课件】-东坡下载...
  9. 火爆全网的 “蚂蚁牙黑” 特效 今天你也可以做。
  10. Redis - Redis分布式算法原理——Hash一致性理解 Hash倾斜性解决方案
  11. IOS 地图导航(其中包括苹果地图、百度地图、高德地图、谷歌地图)
  12. 夏普Sharp SF-S751D 一体机驱动
  13. 苹果手机如何关闭自动续费_手机APP会员自动续费怎么办?教你一招快速关闭!...
  14. 接上一篇Trao文本行数及省略号问题
  15. 电视剧中一看就崩溃的镜头
  16. Python 竟然不是最赚钱的编程语言?!
  17. SQL Server 安装:以前的某个程序安装已在安装计算机上创建挂起的文件操作
  18. MySQL 数据导入
  19. ieee会议论文从手稿到发表
  20. 等级保护测评2.0 mysql 数据库

热门文章

  1. IE8开发者工具调试(三)javascript篇
  2. 28岁程序员期权过亿从字节退休,当事人:同级的张天一比我财富自由多了
  3. 单选框radio赋值 js 及Ajax,layui radio性别单选框赋值方法
  4. 企业级无线渗透与无线数据浅析
  5. APISpace 天气预报查询API
  6. 骁龙笔记本的目的究竟是什么
  7. unity读取Excel
  8. 关于筹码理论的一些知识
  9. 量化交易中,如何使用Python计算「筹码分布」指标【附代码】 [量化小讲堂-64]
  10. 各种嵌入式操作系统介绍