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

}

时间: 2024-10-23 03:00:38

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

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

数据|数据结构|算法 数据结构与算法(C#实现)系列---演示篇(一) Heavenkiller(原创) 这一篇主要是针对以后各篇的数据类型进行一个实质性的演示.因此希望大家具体看了各种数据结构的分析之后再看这篇. 主要包括如下几个方面的演示: 1. 堆栈. 演示了一个利用堆栈作的RPN计算器 2. 排序表.演示了一个利用排序表做的多项式表达式的加法运算 3. 广义树.演示了深度遍历和广度遍历 4. N叉树.演示了N叉树的生成插入删除等基本操作 5. 表达式树.演示了一个用二叉树和堆栈做的可以将

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

数据|数据结构|算法 数据结构与算法(C#实现)系列---树(二) Heavenkiller(原创) public class InOrder:IPrePostVisitor { private IVisitor visitor; public InOrder(IVisitor _vis){visitor=_vis;} #region IPrePostVisitor 成员 public void PreVisit(object _obj) { // TODO: 添加 InOrder.PreVis

数据结构与算法(C#实现)系列---N叉树(二)

数据|数据结构|算法 数据结构与算法(C#实现)系列---N叉树(二) Heavenkiller(原创) public override uint Degree { get { return this.degree; } } //------------------------------------------------------------------------------------- //只用于空树结点 public virtual void AttachKey(object _o

数据结构与算法(C#实现)系列---广义树(二)

数据|数据结构|算法 数据结构与算法(C#实现)系列---广义树(二) Heavenkiller(原创) public override object Key{get{return this.key;}} public override uint Degree{get{return this.degree;}} //public override uint Height{get{return this.height;}} public override bool IsEmpty()// prop

数据结构与算法(C#实现)系列---广义树(一)

数据|数据结构|算法 数据结构与算法(C#实现)系列---广义树(一) Heavenkiller(原创) 广义树和基本树的主要区别就是有任意的度 using System; using System.Collections; namespace DataStructure { /// <summary> /// GeneralTree 的摘要说明. /// general tree is a tree which has a arbitrary degree and no empty tree

数据结构与算法(C#实现)系列---N叉树(一)

数据|数据结构|算法 数据结构与算法(C#实现)系列---N叉树(一) Heavenkiller(原创) N叉树的每一节点度数都相同,为N using System; using System.Collections; namespace DataStructure { /// <summary> /// NaryTree 的摘要说明.-----N叉树 /// </summary> public class NaryTree:Tree { // member variables p

数据结构与算法(C#实现)系列---树(三)

数据|数据结构|算法   数据结构与算法(C#实现)系列---树(三)  Heavenkiller(原创)          //overwrite Object.Equals() ---  reference  type   realization          public override bool Equals(object _obj)          {               if( _obj==null )                    return false;

数据结构与算法(C#实现)系列---树

数据|数据结构|算法 首先我们给树下一个定义: 树是一个有限的.非空的结点集, T={r} or T1 or T2 or-or Tn     它具有下列性质:     1.集合指定的结点r叫做树的根结点     2.其余的结点可以划分成n个子集,T1,T2,-Tn(n>=0),其中每一个子集都是一棵树.         树的其它定义如度,叶子,高等就请大家查阅别的资料吧,到处都有的.     树的主要性质一个就是遍历,分为深度遍历和广度遍历     在这里分别实现为DepthFirstTrave

数据结构与算法系列(1)时间测试

前言 好久都把数据结构和算法的东西忘完了,最近想重温下这些知识.因此就写了<<数据结构与 算法系列>的文章,希望能和大家共同学习,共同探讨这方面的知识.希望大家多多指异. 1.时间测试 由于本部分内容采用了一种实用的方法来分析数据结构与算法检测,所以在这里避开了使用大O分 析法,而采用运行简单基准测试的方法来代替.这种测试将会说明运行一段代码需要多少秒数(或者 无论什么时间单位). 基准法测试是使用时间测试的方法来衡量运行完整算法所花费的时间长度.如同科学一样,基准测 试也像是一门艺术,