问题描述: 后缀表达式也叫逆波兰式,中缀到后缀举例: ( 4 + 2 ) * ( 3 + 6 ) => 4 2 + 3 6 + * (3 + 4 / 2) - 5 => 3 4 2 / + 5 - 问题是求解类似以上右侧的后缀表达式。思路1(递归): 1. 从右向左扫描 2. 因为后缀表...
分类:
其他好文 时间:
2014-10-26 11:35:59
阅读次数:
238
问题描述: 中缀表达式计算,只包含加减乘除以及括号,例如: 2+3*4-5/2 = 11.5 ((2+3*4)-5)/2 = 4.5思路: 1. 维护两个栈空间:数字栈与符号栈 2. 注意入栈与出栈的规则,符号栈入栈时,根据符号优先级判断是否入栈或出栈。 高优先级符号后入栈时...
分类:
其他好文 时间:
2014-10-25 11:46:16
阅读次数:
200
一.中缀转后缀中缀转后缀口诀:1.遇到操作数,直接输出。2.当栈为空时,遇到操作符直接入栈。3.遇到左括号,将其入栈4.遇到右括号,执行出栈,输出出栈的元素,直到弹出左括号,(左右括号不输出)。5.遇到运算符时,依次弹出所有优先级大于或等于该运算符的栈顶元素(到输出)然后将该元素入栈,否则直接入栈。...
分类:
其他好文 时间:
2014-10-17 00:27:33
阅读次数:
304
中缀式变后缀式
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
人们的日常习惯是把算术表达式写成中缀式,但对于机器来说更“习惯于”后缀式,关于算术表达式的中缀式和后缀式的论述一般的数据结构书都有相关内容可供参看,这里不再赘述,现在你的任务是将中缀式变为后缀式。
输入
第一行输入一个整数n,共有n组测试数据(n
每组测试数据只有...
分类:
其他好文 时间:
2014-10-16 23:43:13
阅读次数:
192
前缀式计算
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
先说明一下什么是中缀式:
如2+(3+4)*5这种我们最常见的式子就是中缀式。
而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))
然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )
把括号去掉就是:+ 2 * + 3 4 5
...
分类:
其他好文 时间:
2014-10-16 16:15:02
阅读次数:
203
1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6.最终将栈中的...
分类:
其他好文 时间:
2014-09-26 23:59:48
阅读次数:
154
中缀表达式转后缀表达式
1 基本概念
在计算机中表达式有三种,前缀表达式(波兰式),中缀表达式,后缀表达式(逆波兰式)。
如表达式:a+b*(c-d)-e/f
前缀表达式:-+a*b-cd/ef
中缀表达式:a+b*(c-d)-e/f
后缀表达式:abcd-*+ef/-
1.1 特点与利弊
中缀表达式的括号必不可少,它的优点是符合我们人类的书写和...
分类:
其他好文 时间:
2014-09-20 03:35:06
阅读次数:
220
一个模板了 哈哈
/*
这里主要是逆波兰式的实现,使用两个stack 这里用字符串来模拟一个stack,第一步,将中缀表达式转变为后缀表达式
第二步,然后再使用一个stack,计算后缀表达式的结果,这一步很容易出错,考虑到浮点数的问题。
*/
#include
#include
#include
#include
#include
#include
using namespace s...
分类:
其他好文 时间:
2014-09-19 15:36:35
阅读次数:
198
分析
首先将中缀表达式转换为后缀表达式(逆波兰式),然后使用栈进行计算。
代码
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class ExpCal {
public static double calc(String exp) {
if (exp == null...
分类:
其他好文 时间:
2014-09-18 11:28:43
阅读次数:
206