算法-第四版-练习1.3.11解答
来源:互联网 发布:打扮家 知乎 编辑:程序博客网 时间:2024/05/01 09:36
问题
编写一段程序EvaluatePostfix,从标准输入中得到一个后序表达式,求值并打印结果。
解决思路
后序表达式求解起来比较简单,读到数放入堆栈中,读到运算符,从堆栈中取数字进行运算,然后将结果放回堆栈。最后堆栈中只有一个元素,就是表达式的值。
代码
/** * Description : * Author : mn@furzoom.com * Date : Oct 20, 2016 1:36:55 PM * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved. */package com.furzoom.lab.algs.ch103;import java.util.Scanner;/** * ClassName : E10311 <br> * Function : TODO ADD FUNCTION. <br> * date : Oct 20, 2016 1:36:55 PM <br> * * @version */public class E10311{ private static int evaluatePostfix(String s) { String[] params = s.split(" "); Stack<Integer> stack = new Stack<Integer>(); for (String param : params) { if (param.equals("+")) { int d2 = stack.pop(); int d1 = stack.pop(); stack.push(d1 + d2); } else if (param.equals("-")) { int d2 = stack.pop(); int d1 = stack.pop(); stack.push(d1 - d2); } else if (param.equals("*")) { int d2 = stack.pop(); int d1 = stack.pop(); stack.push(d1 * d2); } else if (param.equals("/")) { int d2 = stack.pop(); int d1 = stack.pop(); stack.push(d1 / d2); } else { // number stack.push(Integer.parseInt(param)); } } return stack.pop(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { System.out.println(evaluatePostfix(scanner.nextLine())); } scanner.close(); }}
结果:
1 2 + 3 4 - 5 6 - * *31 2 3 4 5 * + 6 * * +277
算法-第四版-1.3 背包、队列和栈-习题索引汇总
算法-第四版习题索引汇总
0 0
- 算法-第四版-练习1.3.11解答
- 算法-第四版-练习1.3.1解答
- 算法-第四版-练习1.3.2解答
- 算法-第四版-练习1.3.3解答
- 算法-第四版-练习1.3.4解答
- 算法-第四版-练习1.3.5解答
- 算法-第四版-练习1.3.6解答
- 算法-第四版-练习1.3.7解答
- 算法-第四版-练习1.3.8解答
- 算法-第四版-练习1.3.9解答
- 算法-第四版-练习1.3.10解答
- 算法-第四版-练习1.3.12解答
- 算法-第四版-练习1.3.13解答
- 算法-第四版-练习1.3.14解答
- 算法-第四版-练习1.3.15解答
- 算法-第四版-练习1.3.16解答
- 算法-第四版-练习1.3.17解答
- 算法-第四版-练习1.3.18解答
- 被说了很多遍的设计模式---原型模式
- go time 包操作数据库
- HBase 常用Shell命令
- JS初级给页面添加6000个按钮
- 路由器端口映射实现外网访问本地服务器
- 算法-第四版-练习1.3.11解答
- 让Xcode8支持iPhone4
- 《C++ Primer Plus》2.7编程练习
- android Handler机制源码详解
- Python学习六之文件
- Elasticsearch 下载 安装
- linux系统下搭建mongodb环境
- Golang的并发处理
- Golang和HTTPS在网站前端接入里的高效应用