算法(Algorithms)第4版 练习 1.3.11
主要思路:
这个和Dijkstrad的双栈算法不太一样,后缀的计算只需要一个栈即可。
用一个栈来存数字栈即可。
遇到数字,压栈。
遇到运算法,从栈中弹出相应的数字,用该运算法计算得到结果。
再次压入栈中。
最终从栈中弹出最终运算结果。
方法实现:
//1.3.11 //only support +-*/ operator package com.qiusongde;import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut;public class EvaluatePostfix {public static void main(String[] args) {Stack<Double> vals = new Stack<Double>();while(!StdIn.isEmpty()) {String s = StdIn.readString();if(s.equals("+")) {double v = vals.pop();//second operandv = vals.pop() + v;vals.push(v);}else if(s.equals("-")) {double v = vals.pop();//second operandv = vals.pop() - v;vals.push(v);}else if(s.equals("*")) {double v = vals.pop();//second operandv = vals.pop() * v;vals.push(v);}else if(s.equals("/")) {double v = vals.pop();//second operandv = vals.pop() / v;vals.push(v);}else {vals.push(Double.parseDouble(s));}}StdOut.println(vals.pop());}}
测试1:( 2 + ( ( 3 + 4 ) * ( 5 * 6 ) ) )
用Evaluate计算的结果:
用InfixToPostfix转换结果:
用EvaluatePostfix计算的结果:
测试2:( ( ( 6 + 2 ) * 5 ) - ( 8 / 4 ) )
用Evaluate计算的结果:
用InfixToPostfix转换结果:
用EvaluatePostfix计算的结果:
转载于:https://www.cnblogs.com/songdechiu/p/6513868.html
算法(Algorithms)第4版 练习 1.3.11相关推荐
- 算法导论第三版第十一章11.1-4
算法导论第三版第十一章11.1-4 我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要堆整个数组进行初始化时不太实际的,因为该数组的规模太大 ...
- 《算法》第四版《Algorithms》4th Edition 学习环境搭建
Robert Sedgewick 的<算法>第四版,作者有编写一个库,供讲解学习使用.官网上有详细的配置信息,此处只是做个记录. 网站:http://algs4.cs.princeton. ...
- IDEA配置java《算法》第四版环境(耗时6小时,总算配置成功了,希望能给大家一点帮助)
0.前言 最近在学java语言,然后想用java语言来学习算法,在网上听说看<算法>第四版学习java算法不错,于是就去下载了<算法>电子书来啃 今天看到了用java java ...
- c语言经典算法大全pdf,c语言经典算法100例pdf版.pdf
c语言经典算法100例pdf版 C 语言经典算法 100 例 C 语言编程经典 100 例 A:[程序1] 题目:有1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程 ...
- 给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1)
给出TREE_INSERT过程的非递归版本(算法导论第三版12.3-1) template<typename T> void insert_recursive(BinaryTree< ...
- 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3) TREE-PREDECESSOR(x)if x.left != NILreturn TREE-MAXIMUM(x.left) ...
- 写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2)
写出TREE-MINIMUM 和TREE-MAXIMUM的递归版本(算法导论第三版12.2-2) template<typename T> BinaryTreeNode<T>* ...
- 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
二叉树的中序遍历非递归方法(算法导论第三版12.1-3) 1⃣️用栈实现 template<typename T> void inorder_tree_walk_non_recursion ...
- 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
二叉树的遍历(算法导论第三版12.1-4) 1⃣️先序遍历 template<typename T> void preorder_tree_wald(BinaryTreeNode<T ...
- 利用链表实现可合并堆(算法导论第三版思考题10-2)
利用链表实现可合并堆(算法导论第三版思考题10-2) a 链表已排序 创建一个空堆: Θ(1) 插入:Θ(n),插入后依然保持排序 最小值:Θ(1),第一位便是 取最小值:Θ(1) 合并:Θ(n),可 ...
最新文章
- mysql分类和事务回滚
- 53 Paramiko的使用
- 佛教:关于时间(段)的几种描述
- 如何自定义SAP Spartacus店铺的购物车图表css风格
- java 字符串时间处理_Java 时间和字符换的处理
- 顶尖学府 加州伯克利大学开发高效机器人操纵框架
- ldconfig 和 ldd 命令用法
- EDAS-机器导入失败
- 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
- web页面加载、解析、渲染过程
- 时间格式2020-01-13T16:00:00.000Z中的T和Z分别表示什么,如何处理
- 程序员写在猝死的前一天
- 计算机网络知识点总结(超全,配有常见习题)
- 码科同城小程序源码(含后端php源码)
- 要么听我的,要么走开(摘自《代码之道》第8章)
- 使用Windows PE部署Windows镜像
- 制作自己的字体图标库
- VOS中客户在设置服务器防火墙时需要打开哪些 VOS 应用端口
- Mac系统下修改Java的版本
- 小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用
热门文章
- 新版 apache_2.0.54 php-5.0.4 mysql-4.1.12a 组合安装向导(原创)
- Unicode的前世今生
- WKWebView 实现iOS与H5的交互转
- javascript菜鸟学习20170113
- [软件架构:设计模式系列C#篇]系列教程汇总
- VC++大数据量绘图时无闪烁刷屏技术实现
- + ,- (加号,减号) 是数字类型吗?(sql server 2000中)
- virtualbox 启动时Kernel driver not installed (rc=-1908) 错误的解决方法
- Head First Design Pattern
- codeforces 700B Connecting Universities