【算法与数据结构】中缀表达式转为后缀表达式
(转载请注明出处:http://blog.csdn.net/buptgshengod)
1.题目介绍
2.代码实现部分
import java.util.Stack; public class Main { private String testString = null; private Stack<Character> stack = null; public Main(String testString) { this.testString = testString; this.stack = new Stack<Character>(); } private void analysisString() { for (int i = 0; i < testString.length(); i++) { char c = testString.charAt(i); if (c == '+' || c == '-') { if (stack.isEmpty() || stack.peek() == '(') { stack.push(c); } else { while (!stack.isEmpty() && (stack.peek() == '*' || stack.peek() == '/' || stack.peek() == '+' || stack.peek() == '-')) { System.out.print(stack.pop()); } stack.push(c); } } else if (c == '*' || c == '/') { if (stack.isEmpty() || stack.peek() == '+' || stack.peek() == '-' || stack.peek() == '(') { stack.push(c); } else { while (!stack.isEmpty() && (stack.peek() == '/' || stack.peek() == '*')) { System.out.print(stack.pop()); } stack.push(c); } } else if (c == '(') { stack.push(c); } else if (c == ')') { char temp = ' '; while ((temp = stack.pop()) != '(') { System.out.print(temp); } } else { System.out.print(c); } } if (!stack.isEmpty()) { while (!stack.isEmpty()) { System.out.print(stack.pop()); } } } public static void main(String[] args) { Main testStacknew = new Main("(a-b)*c+d"); testStacknew.analysisString(); } }
运行结果
【算法与数据结构】中缀表达式转为后缀表达式相关推荐
- 九、中缀表达式转为后缀表达式
使用栈将中缀表达式转为后缀表达式并计算 一.中缀表达式转换为后缀表达式 由于后缀表达式适合计算式进行计算,但是人对于较长的中缀表达式,很难将中缀表达式直接转换为后缀表达式,于是我们使用栈来实现中缀表达 ...
- Java堆栈的应用2----------中缀表达式转为后缀表达式的计算Java实现
1.堆栈-Stack 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- 数据结构实验——中缀表达式转为后缀表达式
一.实验内容: 编写程序,实现中缀表达式化为后缀式输出. 已知中缀表达式中操作数全部用小写英文字母表示,运算符只含有+, -, *, /四种,定界符只有( )以及结束符#. 二.程序源代码: 运行示例 ...
- 使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解
书籍在线网址http://interactivepython.org/runestone/static/pythonds/index.html 中文翻译书籍:https://facert.gitboo ...
- 数据结构中缀表达式转后缀表达式与后缀表达式的求值实训报告_动图+源码,演示 Java 中常用数据结构执行过程及原理...
程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, ...
- Java数据结构之中缀表达式转后缀表达式
简介 通过数组模拟栈进行中缀表达式转后缀表达式,再进行计算 不说废话,请看代码. package com.atguigu.Stack;import java.util.ArrayList; impor ...
- python实现中缀表达式转后缀表达式
前缀.中缀.后缀表达式(逆波兰表达式) 前缀表达式称为波兰表达式,前缀表达式的运算符位于操作符之前 举例说明:(3+4)x 5 – 6 对应的前缀表达式就是- X + 3 4 5 6 中缀表达式转为后 ...
- 逆波兰式 java_逆波兰式(后缀表达式)的计算 中缀表达式转后缀表达式(逆波兰式)【java实现】...
一.逆波兰式(后缀表达式)计算 思路: * 1.遍历逆波兰式的集合 * 2.当遍历的元素为数字时,入栈 stack * 3.当遍历的元素为运算符时,stack栈弹出两个数,num2 num1,并用该运 ...
- 【数据结构与算法】【12】前缀表达式、中缀表达式、后缀表达式
什么是前缀表达式.中缀表达式.后缀表达式 前缀表达式.中缀表达式.后缀表达式,是通过树来存储和计算表达式的三种不同方式 以如下公式为例 (a+(b−c))∗d( a+(b-c) )*d(a+(b−c) ...
最新文章
- url加密解密的一个cs类
- 小猿圈Web前端开发学习路线
- android连接SQLite数据库-----增加改查+分页
- 洛谷 P1080 国王游戏
- .net面向对象学习笔记(二)
- Vue —— 移动端添加 fastclick
- 第四次黄鹤楼之老照片
- 【Java思维导图】
- OSI七层网络与TCP/IP五层网络架构及二层/三层网络
- springboot - redis记录并统计网页浏览量
- 我的Android进阶之旅------报 error: Apostrophe not preceded by \ 的错误解决办法
- Python爬虫:最牛逼的 selenium爬取方式!
- 【水滴石穿】ES must与should组合使用的正确方式
- Django+sqlite开发简易记账本
- Python免费发短信时报错
- PHP中http_build_query函数×tamp自动转化为×的解决办法
- KY12 玛雅人的密码
- STM32 无线烧录器
- 5G高校教学实验室/实训室建设
- keepass密码管理工具的汉化
热门文章
- 《图解HTTP》读书笔记--第7章 确保Web安全的HTTPS
- 基坑监测日报模板_长沙一工地基坑坍塌致2人死亡!基坑坍塌的瞬间,只有无能为力和惊心动魄!...
- lua 收不到服务器发来消息,lua 学习之错误处理
- bootstrap 彈窗默認打開_Bootstrap 手册 07 - JS 组件篇
- 计算机导论摘要,[计算机导论复习摘要.doc
- 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
- 量子计算机模型取,Grover算法在单道量子计算模型下的实现
- boot spring 接口接收数据_基于 Spring Boot 实现 Restful 风格接口,实现增删改查功能...
- pandas 删除有缺失值的个案,做回归分析
- StaticQueue