普通的我们写出来的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(),匹配计算的元素和检查合法性,例如元素:(、数字、+等;合法性:(后面不能是+号吧?
中缀表达式转化为后缀表达式。
利用后缀表达式计算出结构。