在实际应用中,由于中缀表达式计算的复杂度较大,并且计算式占用的空间较多,而后缀表达式在理论上可以计算任意复杂度的表达式,并且利用栈的特点每次只需要对栈顶元素进行操作即可,因而将中缀表达式转换为后缀表达式之后将会对计算效率大大提高。
后缀表达式的计算规则为:当遇到操作数(数字)时就将其入栈,当遇到操作符时就取出栈顶的两个元素,根据当前操作符进行计算,将计算结果再压入栈顶。如果表达式是规整的表达式,在整个表达式扫描完成之后栈顶将只有一个数字,该数据即为计算结果。
具体的代码如下:
import java.util.Stack; public class LastExpression { private static Stack<Float> stack = new Stack<>(); public static Float compute(String str) { transfer(str); return stack.pop(); } private static void transfer(String str) { for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case ' ': continue; case '+': plus(); break; case '-': sub(); break; case '*': mul(); break; case '/': div(); break; default: i = num(str, i); } } } private static int num(String str, int index) { StringBuilder numStr = new StringBuilder(""); Character ch = null; while (index < str.length() && ((ch = str.charAt(index)) <= '9' && ch >= '0')) { numStr.append(ch); index++; } stack.push(Float.parseFloat(numStr.toString())); return index - 1; } private static void plus() { Float a = stack.pop(); Float b = stack.pop(); stack.push(a + b); } private static void sub() { Float a = stack.pop(); Float b = stack.pop(); stack.push(a - b); } private static void mul() { Float a = stack.pop(); Float b = stack.pop(); stack.push(a * b); } private static void div() { Float a = stack.pop(); Float b = stack.pop(); stack.push(a / b); } }
相关推荐
利用后缀表达式计算中缀表达式的值.数据结构 花费了我2周的时间才完成的 数据结构 c语言 MFC,是用MFC做的,,该程序功能强大,健壮性很强,对于错误输入有提示,程序完全正确,解压既可以运行
后缀表达式的计算,输入一个后缀表达式利用栈来计算结果
后缀表达式计算过程的规则非常简单:从左到右依次扫描,当读到运算符时,就对该运算符前面的两个操作数执行相应的运算,直至得到表达式的结果。 编写程序模拟编译系统计算中缀表达式的过程,大体分为两步: (1) 将...
四川大学计算机学院-数据结构与算法分析高分实验报告-利用后缀表达式计算中缀表达式的值.rar 都是自己非常认真完成的,每一个要点都实现到位,还额外实现了创新内容。 最后得到的分数也很好
表达式求值(根据原表达式得到后缀表达式计算) 表达式中只限输入整数
编程实现后缀表达式的计算。(40’) (注: 运算数和运算符之间以空格分隔,表达式结尾为EOF)输入描述第一行后缀算数表达式,数字均为正整数,运算符只...如果合法,输出后缀表达式计算结果。(注: 不要出现拼写错误)
程序用了两个栈实现表达式的计算 根绝算符优先级进行pop push 的到后缀表达式 并输出 然后再根绝所得的后缀表达式计算!
由于工作中的需要,自己整理的一个后缀表达式计算求值实例,采用VS2008写的工程,希望对大家有用。
用堆栈实现中缀表达式转后缀,并计算后缀表达式的结果。
1)利用栈将中缀表示转换成后缀表示,从主键盘上输入一个中缀表达式(以‘=’结束),将其转换成后缀表达式...(2)应用后缀表示计算表达式的值,求从一个输入文件中输入的后缀表达式的值,将表达式的值在屏幕上显示出来
中缀表达式转化为后缀表达式算法及后缀表达式计算算法.doc.doc
C++语言,利用堆栈实现波兰表达式实现后缀表达式计算。
C语言 后缀表达式计算
C语言后缀表达式计算.doc
中缀后缀表达式计算.pdf
KMP,中缀转后缀,后缀表达式计算,最短路径,队列,栈,哈弗曼,双向链表
C语言后缀表达式计算资料.pdf
输入常规表达式后,自动转换成后缀表达式,并计算结果。C语言实现,原创代码,欢迎下载。
中缀转后缀表达式计算实现源码(C++、Java)
(1) 从键盘或文件读入一个合法的算术表达式,输出相应的后缀表达式。后缀表达式中,数据与数据之间加分隔符; (2) 输出正确的计算结果,保留两位小数点; (3) 考虑算法的健壮性,当表达式错误时,要给出错误...