中序表达式转后序表达式的java实现
2015-10-13 19:27
555 查看
<pre name="code" class="java">//将一个中序表达式转换为后序表达式
public class InfixToPostfix {public static int compare(String s1, String s2){if((s1.equals("+")||s1.equals("-"))&&(s2.equals("*")||s2.equals("/")))return -1;else if((s1.equals("*")||s1.equals("/"))&&(s2.equals("+")||s2.equals("-")))return 1;else return 0;}public static void main(String[] args){String[] strs = StdIn.readStrings();ListStack<String> mascot = new ListStack<String>();String exp = "";for(int i = 0; i != strs.length; i++){if(strs[i].equals("("))mascot.push(strs[i]);else if(strs[i].equals(")")){String temp = mascot.pop();while(!temp.equals("(")){exp = exp + " " + temp;temp = mascot.pop();}}else if(strs[i].equals("+") || strs[i].equals("-")||strs[i].equals("/")||strs[i].equals("*")){if(mascot.isEmpty() || mascot.peek().equals("(") || (compare(strs[i], mascot.peek()) >= 0))mascot.push(strs[i]);else{while(!mascot.isEmpty() && compare(strs[i], mascot.peek())<=0 && !mascot.peek().equals("("))exp = exp + " " + mascot.pop();mascot.push(strs[i]);}}elseexp = exp + " " + strs[i];}while(!mascot.isEmpty())exp = exp + " " + mascot.pop();StdOut.println(exp);}}*******************************************************************************************************//对后序表达式进行求值
public class EvaluatePostfix {public static void main(String[] args){String[] strs = StdIn.readStrings();ListStack<Double> s = new ListStack<Double>();for(int i = 0; i != strs.length; i++){if(strs[i].equals("+") || strs[i].equals("-")||strs[i].equals("/")||strs[i].equals("*")){double x1 = s.pop();double x2 = s.pop();switch(strs[i].charAt(0)){case '+':x1 = x1 + x2;break;case '-':x1 = x2 - x1;break;case '*':x1 = x1 * x2;break;case '/':x1 = x2 / x1;break;}s.push(x1);}elses.push(Double.parseDouble(strs[i]));}StdOut.println(s.pop());}}
相关文章推荐
- C语言链表之中序表达式
- C基础:堆栈性质应用深度搜索
- 中序表达式转换为逆波兰表达式
- Java栈实现括号匹配、中序转后序表达式、中序表达式直接计算
- 1.3.10将算术表达式由中序表达式转为后序表达式(algs4)
- Java、Android在Eclipse上配置源代…
- 一道题理解Java父子类初始化顺序什么是CopyOnWrite容器
- 大龄屌丝自学笔记--Java零基础到菜鸟--034
- 第7周-反向显示一个数
- Java控制台实现计算器[面向对象思想-02]
- spring的懒加载
- JVM、JRE与JDK简介
- Struts2 验证,validation.xml常用的验证规则
- 一个Spring Scheduler (Quartz) 动态添加,删除,修改任务的例子
- 通过Java获取百度音乐API中的MP3链接
- Java中类修饰符作用域
- hibernate学习入门3
- Java学习笔记
- 第6章 堆排序 java实现 简单版 泛型版 最大优先级队列