将算术表达式由中序表达式转为后序表达式
来源:互联网 发布:avmoo最新域名2016 3 编辑:程序博客网 时间:2024/06/08 07:35
哎,继续加油
package Algorithm;import edu.princeton.cs.algs4.*;public class InfixToPostfix {public static boolean notLessthan(String a,String b){if((a.equals("*")||a.equals("/"))&&(b.equals("*")||b.equals("/")||b.equals("+")||b.equals("-")))return true;else if((a.equals("+")||a.equals("-"))&&(b.equals("+")||b.equals("-")))return true;return false;}public static void main(String[] args) {//用一个栈来处理,一个String来保存Stack<String>s=new Stack<String>();String result="";while(!StdIn.isEmpty()){String str=StdIn.readString();//如果是"(",压入栈中if(str.equals("("))s.push(str);//如果是")",连续出栈,直到遇见"("为止,将"("出栈并丢弃else if(str.equals(")")){while(!s.peek().equals("(")&&!s.isEmpty()){result+=s.pop();}s.pop();}//是运算符,且不是")",不断循环进行else if(str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")){if(s.isEmpty())s.push(str);//如果此运算符不大于栈顶运算符优先级,栈顶运算符出栈,此运算符进栈else if(notLessthan(s.peek(),str)){//while循环保证高优先级运算符全部出栈while(!s.isEmpty()&¬Lessthan(s.peek(),str)&&!s.peek().equals("("))result+=s.pop();s.push(str);}//否则,运算符连续入栈elses.push(str);}//如果是操作数,直接保存elseresult+=str;}while(!s.isEmpty())result+=s.pop();StdOut.println(result);}}
0 0
- 将算术表达式由中序表达式转为后序表达式
- 1.3.10将算术表达式由中序表达式转为后序表达式(algs4)
- 《算法(第四版)》 习题:1.3.10 将算术表达式由中序表达式转为后序表达式
- 将中序表达式转为后序表达式
- 中序表达式 to 后序表达式
- java将中缀表达式转为后缀表达式
- 中序表达式 转为 后序表达式(包含了输出运行的结果)(1310 P102)
- 算术表达式
- 算术表达式
- 算术表达式
- 算术表达式
- 算术表达式
- 算术表达式
- 8.栈的应用-四则运算算术表达式求解(后序表达式法)
- 中序算术式转为后序算术式
- 栈::将中序算术运算表达式改成后序算术运算式
- 将中缀表达式转为后缀表达式和前缀表达式
- 简单中序算术表达式直接建立二叉树测试
- chrome 插件
- Java容器浅谈
- 使用ViewPager来加载图片和轮播视频
- [数据库] Navicat for MySQL换种思维解决插入同时更新数据
- 分析BatteryService服务的获取过程
- 将算术表达式由中序表达式转为后序表达式
- Java IO流
- Java的错误类型
- 配置Spark standalone集群启动
- 一段解析字符串中单词的C语言小程序
- 可变参数之auto-boxing
- C#.NET系列(一):入门,关于C#.NET以及类与命名空间的简介
- 内核对新板子的支持
- 面试题目,金融行业交易金额小写转换为大写的方法,我写的几个版本