普通的我们写出来的2+3运算符号在中间的叫做中缀表达式,通过应用栈转化为后缀表达式,最后通过后缀表达式和应用栈就可以计算出结果了。(博客文章-栈的应用)
class Calculator { private string _expression; public MyList<string> _elements; private StackList<string> _midStack; public MyList<string> _laterString; public Calculator() { _elements = new MyList<string>(100); _midStack = new StackList<string>(100); _laterString = new MyList<string>(100); } //计算表达式 public string Cal(string expression) { this.Clear();//清空那3个线性表 _expression = expression; if (!this.Match()) { Console.WriteLine("表达式非法!"); return ""; } this.TranformMidToLater(); return this.GoResult(); } }
整个计算过程就是:
Match(),匹配计算的元素和检查合法性,例如元素:(、数字、+等;合法性:(后面不能是+号吧?
中缀表达式转化为后缀表达式。
利用后缀表达式计算出结构。