数据结构与算法C#实施系列--实证第二

数据结构与算法C#实施系列--实证第二

                       数据结构与算法(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());


 


 


          }


 


tag:算法数据结构实证系列电脑软件

相关内容