算法的学习之路(1):stack的双栈算术运算操作
来源:互联网 发布:破解激活码软件 编辑:程序博客网 时间:2024/06/06 03:53
stack可以用来进行算术运算的操作,将操作数与运算符号分别放入两个stack中,若遇到“(”,则可以无视掉(前提是需要确保“()“是对应的,当然为了确保括号的配对,也可以用stack来实现 如图)如果遇到运算符,则压栈,当喷到“)”时,说明遇到了一个括号,需要将括号的内容计算出来,然后将新计算的结果作为新的元素压栈,可以通过将操作数的栈中的元素弹栈,与运算符栈弹栈进行组合运算的方式得到括号中的数的运算结果,实习代码如下:
public static void main(String[] args) { Stack<String> ops = new Stack<String>(); Stack<Double> vals = new Stack<Double>(); while(!System.in.toString().isEmpty()){ String s = System.in.toString(); if (s.equals("(")) ; else if(s.equals("+")) ops.push(s); else if(s.equals("-")) ops.push(s); else if(s.equals("*")) ops.push(s); else if(s.equals("/")) ops.push(s); else if(s.equals(")")){ String op = ops.pop(); double val = vals.pop(); if (op.equals("+")) val = val + vals.pop(); else if(op.equals("-")) val = val - vals.pop(); else if(op.equals("*")) val = val * vals.pop(); else if(op.equals("/")) val = val / vals.pop(); vals.push(val); } else vals.push(Double.parseDouble(System.in.toString())); }
1 0
- 算法的学习之路(1):stack的双栈算术运算操作
- 算法学习之路(2):stack的数组实现
- 变量交换的几种算法(算术运算、指针操作、 位运算)
- JAVA关于BigDecimal的算术运算操作
- halcon学习 tuple之算术运算1
- 指针的算术运算(1) 加减运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- 指针的算术运算
- js的算术运算
- matlab的算术运算
- 指针的算术运算
- 指针的算术运算
- 算术运算的应用
- 指针的算术运算
- poj 3071 【概率dp】
- 1
- LDA工程化之快速采样算法
- Java多线程探究-阻塞队列
- 2
- 算法的学习之路(1):stack的双栈算术运算操作
- 高难度:css secrets(会持续更新,每天一个例子的解析)
- Spring整合mybatis 1 查询
- python3 HTTP Error 403:Forbidden
- 博客
- 2017年4月14日22:52 的总结
- Js中this用法
- C#直接的委托
- 动态规划求最长公共子串