原理:
1.将中序表达式变化兴许表达式
2.当前字符为数字,将该数字放入栈中
3.当前字符为操作符,从栈中取出两个树,依据操作符来运算,将运算结果放入到栈中
4.反复,直到将字符操作完。此时栈中仅仅剩下一个元素,即要运算的结果
PS:我没有处理。仅仅能够执行10以内的运算,假设有须要能够扩展package com.lip.datastructure.tree;
import java.util.Iterator;
import java.util.Stack;
public class Calculator
{
public static void main(String[] args)
{
String obj = "a*(b+c)+c/d";
String obj1 = "2*(1+3)+9/3";
System.out.println(obj1+"="+calculator(obj1));
}
//利用后序表达式计算
///原理:1.当期字符为字母或者数字,则直接入栈
// 2.当前字符为操作符则从栈中取出两个数字计算
// 3.将计算结果再放入到栈中,栈中最后剩余的一个元素就是要求的结果
public static int calculator(String obj)
{
String postObj=tranform(obj);
System.