频道栏目
首页 > 资讯 > C# > 正文

栈的应用_表达式求值_C#实现

10-07-11        来源:[db:作者]  
收藏   我要投稿

[参考文献:严蔚敏.数据结构(C语言版)]

表达式求值是程序设计语言编译中的一个最基本问题,它的实现是栈应用的一个典型例子.

搞了一天,有相关的好的算法请大家传上来,一起分享.

表3.1: 定义了算符之间的优先关系:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace EvaluateExpression
{
    class EvaluateExpression
    {
        private static string  Precede(string  t1, string  t2)    //根据表3.1,判断两符号的优先关系
        {
            string f = string.Empty;
            switch (t2)
            {
                case "+":
                case "-":
                    if (t1 == "(" || t1 == "#")
                        f = "<";
                    else
                        f = ">";
                    break;

                case "*":
                case "/":
                    if (t1 == "*" || t1 == "/" || t1 == ")")
                        f = ">";
                    else
                        f = "<";
                    break;
                case "(":
                    if (t1 == ")")
                        throw new ArgumentOutOfRangeException("表达式错误");
                    else
                        f = "<";
                    break;
                case ")":
                    switch (t1)
                    {
                        case "(": f = "="; break;
                        case "#": throw new ArgumentOutOfRangeException("表达式错误");
                        default: f = ">"; break;
                    }
                    break;
                case "#":
                    switch (t1)
                    {
                        case "#": f = "="; break;
                        case "(": throw new ArgumentOutOfRangeException("表达式错误");
                        default: f = ">"; break;
                    }
                    break;
            }
            return f;
        }
        private static bool In(string  c)    //判断c是否为运算符
        {
           switch(c)
           {
              case"+":
              case"-":
              case"*":
              case"/":
              case"(":
              case")":
              case"#":  return true ; 
              default:  return false ;
   &n

相关TAG标签
上一篇:C#网页版代码生成器
下一篇:使用反射解决实体类型转换问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站