數(shù)據(jù)結(jié)構(gòu)與算法(C#實現(xiàn))系列---演示篇(二)
Heavenkiller(原創(chuàng))
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. 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; } //構(gòu)造一棵廣義樹 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);//設(shè)置遍歷類型 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()); }
新聞熱點
疑難解答