中缀转后缀需要处理的有:
1. 操作数,操作符的提取
2. 括号等关系到运算符优先级的符号
3. 一元操作符(如 +(正), -(负)) 等
4. 操作符和操作数的匹配,括号的匹配,(函数参数的个数是否正确等)

基本思路如下:
用一个链表 List<ExpressionToken> 储存将要生成的后缀表达式
用一个栈 Stack<OperatorType> 储存操作符
判断当前节点, 如果是操作数, 直接加入后缀表达式中, 如果是操作符,则比较前一个操作符和当前操作符的优先级,
如果前一个操作符优先级较高,则将前一个操作符加入后缀表达式中,否则将操作符压入操作符栈,如果遇到反括号 ')', 则在操作符栈中反向搜索,直到遇到匹配的正括号为止,将中间的操作符依次加到后缀表达式中。
举例:  15+25*2, 共有 15, +, 25, *, 2 五个符号,下面一步步列出每一步操作
第一步: 数字加入后缀表达式
 操作符栈  空
 后缀表达式  15
第二步:+ 号 压入操作符栈
 操作符栈  +
 后缀表达式  15
第三步:
 操作符栈  +
 后缀表达式  15 25
第四步:是一个*号,因为*号的优先级比+号高,所以直接压入操作符栈中
 操作符栈  + *
 后缀表达式  15 25
第五步:
 操作符栈  + *
 后缀表达式  15 25 2
第六步:没有符号了,直接将操作符栈中剩余的依次加到表达式中,最终的结果
 操作符栈  空
 后缀表达式  15 25 2 * +

那假如括号呢?例如 (15 + 25) * 2, 共有7个符号,每一步的操作为
第一步: 左括号直接压入操作符栈
 操作符栈  (
 后缀表达式  空
第二步:数字加入表达式中
 操作符栈  (
 后缀表达式  15
第三步:+号压入操作符栈
 操作符栈  ( +
 后缀表达式  15
第四步:数字加入表达式中
 操作符栈  ( +
 后缀表达式  15 25
第五步:遇到反括号了,将两个括号之间操作符依次加入到表达式中,并删除匹配的正括号
 操作符栈  空
 后缀表达式  15 25 +
第六步:*号压入操作符栈
 操作符栈  *
 后缀表达式  15 25 +
第七步:数字加入表达式中
 操作符栈  *
 后缀表达式  15 25 + 2
第八步:没有符号了,直接将操作符栈中剩余的依次加到表达式中,最终的结果
 操作符栈  空
 后缀表达式  15 25 + 2 *
这样就可以看出优先级对表达式的影响。

依照上述要求, 编写相应的函数:
首先定义几个变量
支持函数,变量的算术表达式计算(二、中缀转后缀)        bool needOp = false;    //此时需要操作符(如果不是,则说明操作符丢失)
支持函数,变量的算术表达式计算(二、中缀转后缀)
        bool needParentheses = false;//前一个操作符是函数,所以下一个操作符必须是左括号
支持函数,变量的算术表达式计算(二、中缀转后缀)
        bool needDigit = false//前一个操作符是 -(负号),所以下一个操作符必须是数字
支持函数,变量的算术表达式计算(二、中缀转后缀)

1. 操作数的提取
   操作数的提取只需要注意一点,就是正负号的问题(+/-),它们不但可以当作二元操作符,还能当一元操作符, 比如
   15 + -9 ,此时的-号就应该是一元操作符
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        /**//// <summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// 操作数
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// </summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="index">表达式当前字符的索引</param>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="expression">当前表达式</param>

支持函数,变量的算术表达式计算(二、中缀转后缀)        public void ProcDigit(ref int index, ref string expression)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)            
if (needOp)
支持函数,变量的算术表达式计算(二、中缀转后缀)                
throw new ExpressionException("缺少操作符"1001);
支持函数,变量的算术表达式计算(二、中缀转后缀)
支持函数,变量的算术表达式计算(二、中缀转后缀)            StringBuilder str 
= new StringBuilder();
支持函数,变量的算术表达式计算(二、中缀转后缀)            
for (int i = index; i < expression.Length; i++)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
char c = expression[i];
支持函数,变量的算术表达式计算(二、中缀转后缀)                
if (char.IsDigit(c) || c == '.')
支持函数,变量的算术表达式计算(二、中缀转后缀)                    str.Append(c);
支持函数,变量的算术表达式计算(二、中缀转后缀)                
else
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                }

支持函数,变量的算术表达式计算(二、中缀转后缀)                index 
= i;
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            needOp 
= true;
支持函数,变量的算术表达式计算(二、中缀转后缀)            
decimal data = Convert.ToDecimal(str.ToString());
支持函数,变量的算术表达式计算(二、中缀转后缀)            
//如果前一个是一元操作符(-) 负号,则须对数值进行处理
支持函数,变量的算术表达式计算(二、中缀转后缀)
            if (needDigit)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
if (stackOp.Pop() == OperatorType.Subtract)
支持函数,变量的算术表达式计算(二、中缀转后缀)                    data 
= -data;
支持函数,变量的算术表达式计算(二、中缀转后缀)                needDigit 
= false;
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            lstExp.Add(
new ExpressionToken(TokenType.Numeric
支持函数,变量的算术表达式计算(二、中缀转后缀)                , data));
支持函数,变量的算术表达式计算(二、中缀转后缀)        }


2. 操作符的提取
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        /**//// <summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// 提取操作符
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// </summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="index"></param>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="op"></param>

支持函数,变量的算术表达式计算(二、中缀转后缀)        public void ProcOperator(int index, OperatorType op)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)            
if (!needOp)
支持函数,变量的算术表达式计算(二、中缀转后缀)                
throw new ExpressionException("缺少操作数"1002);
支持函数,变量的算术表达式计算(二、中缀转后缀)            
if (stackOp.Count > 0)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
while (stackOp.Count > 0)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                    OperatorType opPrev 
= stackOp.Peek();
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
if (!IsBaseOperator(opPrev) || PRI(opPrev, op) < 0)
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
//如果前一个操作符的优先级比当前操作符高,则需将前一个操作符
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
//加入到表达式中,并从操作符栈中清除
支持函数,变量的算术表达式计算(二、中缀转后缀)
                    lstExp.Add(new ExpressionToken(TokenType.Operator, opPrev));
支持函数,变量的算术表达式计算(二、中缀转后缀)                    stackOp.Pop();
支持函数,变量的算术表达式计算(二、中缀转后缀)                }

支持函数,变量的算术表达式计算(二、中缀转后缀)                stackOp.Push(op);
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            
else
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                stackOp.Push(op);
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            needOp 
= false;
支持函数,变量的算术表达式计算(二、中缀转后缀)        }

3. 括号的处理
 括号的处理分正括号和反括号两种, 正括号处理比较简单,直接压入操作符栈,反括号就比较麻烦,需要考虑多个因素,代码如下
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        /**//// <summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// 括号的处理
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// </summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="index"></param>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// <param name="op"></param>

支持函数,变量的算术表达式计算(二、中缀转后缀)        public void ProcParentheses(int index, OperatorType op)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)            
if (op == OperatorType.L_Parentheses) //左括号
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)
            支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                needOp 
= false;
支持函数,变量的算术表达式计算(二、中缀转后缀)                needParentheses 
= false;
支持函数,变量的算术表达式计算(二、中缀转后缀)                stackOp.Push(op);
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            
else if (op == OperatorType.R_Parentheses) //右括号
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)
            支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
bool find = false;
支持函数,变量的算术表达式计算(二、中缀转后缀)                
//如果是函数,则此处为函数的参数个数
支持函数,变量的算术表达式计算(二、中缀转后缀)                
//通过统计逗号的个数得出参数的个数
支持函数,变量的算术表达式计算(二、中缀转后缀)
                int funcParam = 1;  
支持函数,变量的算术表达式计算(二、中缀转后缀)                
while (stackOp.Count > 0)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
if (stackOp.Peek() != OperatorType.L_Parentheses)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                    
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                        OperatorType opPop 
= stackOp.Pop();
支持函数,变量的算术表达式计算(二、中缀转后缀)
//此处代码用于判断函数参数个数,本节可忽略
支持函数,变量的算术表达式计算(二、中缀转后缀)
                        if (opPop == OperatorType.Comma)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                            funcParam
++;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        }

支持函数,变量的算术表达式计算(二、中缀转后缀)                        
else
支持函数,变量的算术表达式计算(二、中缀转后缀)                            lstExp.Add(
new ExpressionToken(TokenType.Operator, opPop));
支持函数,变量的算术表达式计算(二、中缀转后缀)                    }

支持函数,变量的算术表达式计算(二、中缀转后缀)                    
else
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                    
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                        stackOp.Pop();
支持函数,变量的算术表达式计算(二、中缀转后缀)                        find 
= true;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                    }

支持函数,变量的算术表达式计算(二、中缀转后缀)                }

支持函数,变量的算术表达式计算(二、中缀转后缀)                
if (!find)
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
throw new ExpressionException("括号不匹配.(缺少左括号)"1003);
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)        }

支持函数,变量的算术表达式计算(二、中缀转后缀)

4.比较两个函数的优先级,比较简单

支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        /**//// <summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// 比较两个操作符的优先级
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// </summary>

支持函数,变量的算术表达式计算(二、中缀转后缀)        public int PRI(OperatorType op1, OperatorType op2)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)            
return (int)op1 - (int)op2;
支持函数,变量的算术表达式计算(二、中缀转后缀)        }

5. 逐字节解析算术表达式,然后分别调用上述几个函数,具体分析见注释
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        /**//// <summary>
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// 将算术表达式转换为逆波兰表达式
支持函数,变量的算术表达式计算(二、中缀转后缀)        
/// </summary>

支持函数,变量的算术表达式计算(二、中缀转后缀)        public void ConvertExpression()
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)        
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
for#region for
支持函数,变量的算术表达式计算(二、中缀转后缀)
支持函数,变量的算术表达式计算(二、中缀转后缀)                
for (int i = 0; i < strExpression.Length; i++)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
char c = strExpression[i];
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
if (needDigit && !char.IsDigit(c))
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
throw new ExpressionException("一元操作符(+,-)后面必须紧跟数字");
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
if (char.IsWhiteSpace(c))
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
continue;
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
//如果前一个操作符是函数,则此处必须为括号
支持函数,变量的算术表达式计算(二、中缀转后缀)
                    if (needParentheses && c != '(')
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
throw new ExpressionException("缺少函数的左括号"1003);
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
switch (c)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                    
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
//+-即可为二元操作符,也可为一元操作符
支持函数,变量的算术表达式计算(二、中缀转后缀)
                        case '+':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
if (!needOp)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                                
//此时,将+号作为一元操作符正号来解析
支持函数,变量的算术表达式计算(二、中缀转后缀)
                                needDigit = true;
支持函数,变量的算术表达式计算(二、中缀转后缀)                                stackOp.Push(OperatorType.Plus);
支持函数,变量的算术表达式计算(二、中缀转后缀)                                
continue;
支持函数,变量的算术表达式计算(二、中缀转后缀)                            }

支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcOperator(i, OperatorType.Plus);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case '-':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
if (!needOp)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                                
//此时,将-号作为一元操作符负号来解析
支持函数,变量的算术表达式计算(二、中缀转后缀)
                                needDigit = true;
支持函数,变量的算术表达式计算(二、中缀转后缀)                                stackOp.Push(OperatorType.Subtract);
支持函数,变量的算术表达式计算(二、中缀转后缀)                                
continue;
支持函数,变量的算术表达式计算(二、中缀转后缀)                            }

支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcOperator(i, OperatorType.Subtract);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case '*':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcOperator(i, OperatorType.MultiPly);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case '/':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcOperator(i, OperatorType.Divide);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case '(':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcParentheses(i, OperatorType.L_Parentheses);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case ')':
支持函数,变量的算术表达式计算(二、中缀转后缀)                            ProcParentheses(i, OperatorType.R_Parentheses);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
case ','//处理逗号, 本节可忽略支持函数,变量的算术表达式计算(二、中缀转后缀)
支持函数,变量的算术表达式计算(二、中缀转后缀)
                            ProcComma(i);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                        
default:
支持函数,变量的算术表达式计算(二、中缀转后缀)                            
//数字
支持函数,变量的算术表达式计算(二、中缀转后缀)
                            if (char.IsDigit(c))
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)                            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                                ProcDigit(
ref i, ref strExpression);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            }

支持函数,变量的算术表达式计算(二、中缀转后缀)                            
else //其它的字符全当成函数(本节可忽略)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)
                            支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                                ProcFunc(
ref i, ref strExpression);
支持函数,变量的算术表达式计算(二、中缀转后缀)                            }

支持函数,变量的算术表达式计算(二、中缀转后缀)                            
break;
支持函数,变量的算术表达式计算(二、中缀转后缀)                    }

支持函数,变量的算术表达式计算(二、中缀转后缀)                }

支持函数,变量的算术表达式计算(二、中缀转后缀)                
#endregion

支持函数,变量的算术表达式计算(二、中缀转后缀)            
if (!needOp)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
//最后一个操作符必须是数字或变量
支持函数,变量的算术表达式计算(二、中缀转后缀)
                throw new ExpressionException("缺少操作数"1002);
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)            
while (stackOp.Count > 0)
支持函数,变量的算术表达式计算(二、中缀转后缀)支持函数,变量的算术表达式计算(二、中缀转后缀)            
支持函数,变量的算术表达式计算(二、中缀转后缀){
支持函数,变量的算术表达式计算(二、中缀转后缀)                
if (stackOp.Peek() == OperatorType.L_Parentheses)
支持函数,变量的算术表达式计算(二、中缀转后缀)                    
throw new ExpressionException("括号不匹配(缺少右括号)"1004);
支持函数,变量的算术表达式计算(二、中缀转后缀)                lstExp.Add(
new ExpressionToken(TokenType.Operator, stackOp.Pop()));
支持函数,变量的算术表达式计算(二、中缀转后缀)            }

支持函数,变量的算术表达式计算(二、中缀转后缀)        }

OK, 中缀转后缀完成了, 再加上前一节的计算后缀表达式,终于可以写一个简单的计算器了。
支持函数,变量的算术表达式计算(二、中缀转后缀)

点击此处下载

待续。。。。。。。

转载于:https://www.cnblogs.com/michaelhuwei/archive/2008/01/02/1023105.html

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-10-30
  • 2022-02-15
  • 2022-02-27
  • 2021-06-06
猜你喜欢
  • 2021-08-31
  • 2021-09-28
  • 2021-07-31
  • 2021-07-14
  • 2021-04-18
  • 2022-12-23
相关资源
相似解决方案