WEB开发网
开发学院软件开发C语言 数据结构与算法(C#实现)系列---演示篇(二) 阅读

数据结构与算法(C#实现)系列---演示篇(二)

 2004-02-07 12:45:08 来源:WEB开发网   
核心提示: 数据结构与算法(C#实现)系列---演示篇(二) Heavenkiller(原创) public static void ShowGeneralTree_travel() { IEnumerator tmpIEnum; Tree.TraversalType travelType=0; //-提示 Conso

          数据结构与算法(C#实现)系列---演示篇(二)

             Heavenkiller(原创)

   public static void ShowGeneralTree_travel()

   {

      IEnumerator tmpIEnum;

      Tree.TraversalType travelType=0;

      //---------------------提示----------------------------

      Console.WriteLine("please choose a the No. of a item you want to travel:");

      Console.WriteLine("1.BreadthFirst----- 广度遍历");

      Console.WriteLine("2.PReDepthFirst-----前序遍历");

      Console.WriteLine("3.InDepthFirst----中序遍历");

      Console.WriteLine("4.PostDepthFirst----后序遍历");

      switch(Console.ReadLine())

      {

        case "1"://Show Stack

          travelType=Tree.TraversalType.Breadth;

          Console.WriteLine("广度遍历");

          break;

        case "2"://SortedList

          travelType=Tree.TraversalType.PreDepth;

          Console.WriteLine("前序遍历");

          break;

        case "3":

          travelType=Tree.TraversalType.InDepth;

          Console.WriteLine("中序遍历");

          break;

        case "4":

       

travelType=Tree.TraversalType.PostDepth;

          Console.WriteLine("后序遍历");

          break;

       

        default:

          break;

      }

      //构造一棵广义树 generaltree

      GeneralTree A=new GeneralTree("A");

      GeneralTree B=new GeneralTree("B");

      GeneralTree C=new GeneralTree("C");

      GeneralTree D=new GeneralTree("D");

      GeneralTree E=new GeneralTree("E");

      GeneralTree F=new GeneralTree("F");

          A.AttackSubtree(B);

      A.AttackSubtree(C);

      B.AttackSubtree(D);

      B.AttackSubtree(E);

      A.AttackSubtree(F);

      //show the Operation

      Console.WriteLine("A.AttackSubtree(B)");

      Console.WriteLine("A.AttackSubtree(C)");

      Console.WriteLine("B.AttackSubtree(D)");

      Console.WriteLine("B.AttackSubtree(E)");

      Console.WriteLine("A.AttackSubtree(F)");

//--------------------------------------------------------

  

      A.SetTraversalType(travelType);//设置遍历类型

      tmpIEnum=A.GetEnumerator();

      //Console.WriteLine("begin to depthfist travel:");

  

      while(tmpIEnum.MoveNext())

      {

        Console.WriteLine(tmpIEnum.Current.ToString());

      }

  

   }

   public static void ShowStack_RPNCalCulator()

   {

      //read a expression string and push every character into the stack in queue.

      Console.WriteLine("this is performance for stack,you can input a string like this '123*+',then this subprogramme can compute it and get the result '7',this is RPN calculator. ");

      Console.WriteLine("please input a expression string:");

      string strExpression=Console.ReadLine();

      char [] tmpChars=strExpression.ToCharArray(0,strExpression.Length);

      Stack stackRPN=new Stack();

     

      int numA,numB;

      foreach(char tmp in tmpChars)

      {

        switch (tmp)

        {

          case '*':

             numA=(int)stackRPN.Pop();

             numB=(int)stackRPN.Pop();

             stackRPN.Push(numA*numB);

             break;

          case '+':

             numA=(int)stackRPN.Pop();

             numB=(int)stackRPN.Pop();

             stackRPN.Push(numA+numB);

             break;

          default:

             stackRPN.Push(Int32.Parse(tmp.ToString()));

             break;

         

        }

       

       

      }

      Console.WriteLine("the result is:{0}",stackRPN.Pop().ToString());

    }

Tags:数据结构 算法 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接