(转载请注明出处:http://blog.csdn.net/buptgshengod)

1.题目介绍

    中缀表达式是将运算符放在运算数中间的写法,如a+b*c。后缀表达式是将运算符放在运算数后面,如abc*+。

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();  }  }  

运行结果

【算法与数据结构】中缀表达式转为后缀表达式相关推荐

  1. 九、中缀表达式转为后缀表达式

    使用栈将中缀表达式转为后缀表达式并计算 一.中缀表达式转换为后缀表达式 由于后缀表达式适合计算式进行计算,但是人对于较长的中缀表达式,很难将中缀表达式直接转换为后缀表达式,于是我们使用栈来实现中缀表达 ...

  2. Java堆栈的应用2----------中缀表达式转为后缀表达式的计算Java实现

    1.堆栈-Stack 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  3. 数据结构实验——中缀表达式转为后缀表达式

    一.实验内容: 编写程序,实现中缀表达式化为后缀式输出. 已知中缀表达式中操作数全部用小写英文字母表示,运算符只含有+, -, *, /四种,定界符只有( )以及结束符#. 二.程序源代码: 运行示例 ...

  4. 使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解

    书籍在线网址http://interactivepython.org/runestone/static/pythonds/index.html 中文翻译书籍:https://facert.gitboo ...

  5. 数据结构中缀表达式转后缀表达式与后缀表达式的求值实训报告_动图+源码,演示 Java 中常用数据结构执行过程及原理...

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, ...

  6. Java数据结构之中缀表达式转后缀表达式

    简介 通过数组模拟栈进行中缀表达式转后缀表达式,再进行计算 不说废话,请看代码. package com.atguigu.Stack;import java.util.ArrayList; impor ...

  7. python实现中缀表达式转后缀表达式

    前缀.中缀.后缀表达式(逆波兰表达式) 前缀表达式称为波兰表达式,前缀表达式的运算符位于操作符之前 举例说明:(3+4)x 5 – 6 对应的前缀表达式就是- X + 3 4 5 6 中缀表达式转为后 ...

  8. 逆波兰式 java_逆波兰式(后缀表达式)的计算 中缀表达式转后缀表达式(逆波兰式)【java实现】...

    一.逆波兰式(后缀表达式)计算 思路: * 1.遍历逆波兰式的集合 * 2.当遍历的元素为数字时,入栈 stack * 3.当遍历的元素为运算符时,stack栈弹出两个数,num2 num1,并用该运 ...

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

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

最新文章

  1. url加密解密的一个cs类
  2. 小猿圈Web前端开发学习路线
  3. android连接SQLite数据库-----增加改查+分页
  4. 洛谷 P1080 国王游戏
  5. .net面向对象学习笔记(二)
  6. Vue —— 移动端添加 fastclick
  7. 第四次黄鹤楼之老照片
  8. 【Java思维导图】
  9. OSI七层网络与TCP/IP五层网络架构及二层/三层网络
  10. springboot - redis记录并统计网页浏览量
  11. 我的Android进阶之旅------报 error: Apostrophe not preceded by \ 的错误解决办法
  12. Python爬虫:最牛逼的 selenium爬取方式!
  13. 【水滴石穿】ES must与should组合使用的正确方式
  14. Django+sqlite开发简易记账本
  15. Python免费发短信时报错
  16. PHP中http_build_query函数×tamp自动转化为×的解决办法
  17. KY12 玛雅人的密码
  18. STM32 无线烧录器
  19. 5G高校教学实验室/实训室建设
  20. keepass密码管理工具的汉化

热门文章

  1. 《图解HTTP》读书笔记--第7章 确保Web安全的HTTPS
  2. 基坑监测日报模板_长沙一工地基坑坍塌致2人死亡!基坑坍塌的瞬间,只有无能为力和惊心动魄!...
  3. lua 收不到服务器发来消息,lua 学习之错误处理
  4. bootstrap 彈窗默認打開_Bootstrap 手册 07 - JS 组件篇
  5. 计算机导论摘要,[计算机导论复习摘要.doc
  6. 安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian
  7. 量子计算机模型取,Grover算法在单道量子计算模型下的实现
  8. boot spring 接口接收数据_基于 Spring Boot 实现 Restful 风格接口,实现增删改查功能...
  9. pandas 删除有缺失值的个案,做回归分析
  10. StaticQueue