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

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus