算法思想数据结构的书上都有,网上也能搜到,只是贴一个示例代码
package info.lwjlaser.tree;
import java.util.Stack;
public class Postfix {
public static void main(String [] args)
{
String expression = "(a+b)*(a-b)";
// String expression = "a+b*c+(d*e+f)*g";
deal(expression);
}
private static void deal(String ex)
{
Stack<Character> st = new Stack<Character>();
char [] temps = ex.toCharArray();
for(char temp : temps)
{
switch (temp)
{
case '+' :
case '-' :
while (!st.isEmpty() && st.peek()!='(')
{
System.out.print(st.pop());
}
st.push(temp);
break;
case '*' :
case '/' :
while (!st.isEmpty() && (st.peek() == '*' || st.peek() == '/'))
{
System.out.print(st.pop());
}
st.push(temp);
break;
case ')' :
while (st.peek() != '(')
{
System.out.print(st.pop());
}
st.pop();
break;
case '(' :
st.push('(');
break;
default :
System.out.print(temp);
}
}
while(!st.isEmpty())
{
System.out.print(st.pop());
}
}
}
分享到:
相关推荐
java中缀表达式转后缀表达式并计算结果(可以处理多位数
输入中缀表达式,转换为后缀表达式,并计算结果。输入的表达可以为数字,也可以是字母。
c语言实现中缀表达式转后缀表达式并求得计算结果,用顺序栈结构。 当输入者输入错误信息的时候需要报错,并说明错误的种类。
中缀表达式转后缀表达式,java版本。可以进行多位数计算的
编译系统对中缀表达式的处理方法是先把它转换为后后缀表达式.在后缀表达式中,运算符位于两个操作数的后面,并且没有括号,其运算符的次序就是其执行运算的次序。后缀表达式计算过程的规则非常简单:从左到右依次扫描,...
利用C语言实现中缀表达式转化为后缀表达式!!利用栈。
一个简单的算法,利用栈实现中缀表达式与后缀表达式的转换
数据结构的中缀表达式转后缀表达式,通过C++语言实现。使用堆栈方法进行转换,能正确运算包含括号、加、减、乘、除复合运算,如(1+2)*3-1.8*(18/(7+2)) = 8.2。
/*程序由本人编译,并且经过多次测试,正确无误!目前该转换算法只支持数字在0至9之间的+-*/四元运算转换.*/ /**************程序员信息 ***************东北大学*******************东大很厉害**************** ...
用户输入中缀表达式,程序输出后缀表达式并输出计算结果
08.中缀表达式转换后缀表达式算法.ppt
c语言实现中缀表达式向后缀表达式转换 分类:算法+数据结构
中缀表达式转后缀表达式,并进行计算; 支持: 支持函数: Abs 绝对值 Power 幂 Sqr 平方 Sqrt 平方根 Abs Sqr Sqrt 需要加括号 Power不需要 * 后缀运算符: * 第1级: () 从左到右 * 算出运算符: * 第4级:* \ % 从...
中缀表达式转后缀生产表达式二叉树,并在控制台中画出。
栈实现中缀表达式到后缀表达式的转换 InfixToSuffix 用C语言编写 code blocks开发
中缀表达式就是我们通常所书写的数学表达式,后缀表达式也称为逆波兰表达式,在编译程序对我们书写的程序中的表达式进行语法检查时,往往就可以通过逆波兰表达式进行。我们所要设计并实现的程序就是将中缀表示的...
不错 中缀表达式转后缀表达式 简单表达式运算