数据结构与算法(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());
}
|
温馨提示:喜欢本站的话,请收藏一下本站!