您的位置:首页精文荟萃软件资讯 → 数据结构与算法C#实现系列---演示篇一

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

时间:2004/10/8 13:17:00来源:本站整理作者:蓝点我要评论(0)

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


                                 Heavenkiller(原创)


     这一篇主要是针对以后各篇的数据类型进行一个实质性的演示。因此希望大家具体看了各种数据结构的分析之后再看这篇。


     主要包括如下几个方面的演示:


1.      堆栈。 演示了一个利用堆栈作的RPN计算器


2.      排序表。演示了一个利用排序表做的多项式表达式的加法运算


3.      广义树。演示了深度遍历和广度遍历


4.      N叉树。演示了N叉树的生成插入删除等基本操作


5.      表达式树。演示了一个用二叉树和堆栈做的可以将一个后缀表达式翻译为日常中熟悉的中缀表达式的例子


6.      AVL树。演示了基本操作


 


 


using System;


using System.Collections;


 


namespace DataStructure


{


     ///


     /// Class1 的摘要说明。


     ///


     class Show


     {


         ///


         /// 应用程序的主入口点。


         ///


         [STAThread]


         static void Main(string[] args)


         {


              //


              // TODO: 在此处添加代码以启动应用程序


              //


              while(true)


              {


                   Console.WriteLine("please choose a the No. of a item you want to perform:");


                   Console.WriteLine("1.Stack----- RPNCalCulator");


                   Console.WriteLine("2.SortedList-----the addition of polynomial realized by sortedlist ");


                   Console.WriteLine("3.GeneralTree----depthtravesal and breathtraval");


                   Console.WriteLine("4.NaryTree");


                   Console.WriteLine("5.ExpressionTree");


                   Console.WriteLine("6.AVLTree");


                   Console.WriteLine("7.BinaryHeap");


                   Console.WriteLine("exit--Exit this programme");


                   //Test();


             


                   switch(Console.ReadLine())


                   {


                       case "1"://Show Stack


                            ShowStack_RPNCalCulator();


                            break;


                       case "2"://SortedList


                            ShowSortedList_Polynomial();


                            break;


                       case "3":                  


                            ShowGeneralTree_travel();


                            break;


                       case "4":


                            ShowNaryTree();//演示一个三叉树的Attach和Detach


                            break;


                       case "5":


                            ShowExpressionTree();


                            break;


                       case "6":


                            ShowAVLTree();


                            break;


                       case "7":


                            ShowBinaryHeap();


                            break;


                       case "exit":


                            return;      


                       default:


                            break;


                   }


              }


             


         }


         public static void ShowBinaryHeap()


         {


              //构造一个二叉堆, 包含2,4,6,8,10,12


              BinaryHeap bHeap=new BinaryHeap(10);


              bHeap.Enqueue(12);


              bHeap.Enqueue(10);


              bHeap.Enqueue(8);


              bHeap.Enqueue(6);


              bHeap.Enqueue(4);


              bHeap.Enqueue(2);


 


              //测试Dequeue();


              while(bHeap.Count!=0)


              {


                   Console.WriteLine(bHeap.DequeueMin().ToString());


              }


         }


         public static void ShowAVLTree()


         {


              AVLTree testAVL=new AVLTree(5);


              testAVL.Insert(1);


              testAVL.Insert(3);


              testAVL.Insert(7);


              testAVL.Insert(8);


              testAVL.Insert(9);


              testAVL.Insert(10);


              testAVL.Insert(11);


 


              PrintVisitor vis=new PrintVisitor();


              Tree.InOrder inVis=new DataStructure.Tree.InOrder(vis);


              testAVL.DepthFirstTraversal(inVis);


         }


         public static void ShowExpressionTree()


         {


              ExpressionTree.PostfixToInfix();


         }


         public static void ShowNaryTree()


         {


              //构造一个三叉树,具体见图1-2


              NaryTree A=new NaryTree(3,"A");


              NaryTree B=new NaryTree(3,"B");


              NaryTree C=new NaryTree(3,"C");


              NaryTree D=new NaryTree(3,"D");


              NaryTree E=new NaryTree(3,"E");


 


              B.AttachSubtree(1,D);


              B.AttachSubtree(2,E);


 


              A.AttachSubtree(1,B);


              A.AttachSubtree(3,C);


             


              //---------------------------


              Console.WriteLine("广度遍历");


              PrintVisitor vis=new PrintVisitor();


             


              A.BreadthFirstTraversal(vis);//广度遍历


 


              Console.WriteLine("前序遍历");


              Tree.PreOrder preVisit=new DataStructure.Tree.PreOrder(vis);


              A.DepthFirstTraversal(preVisit);


 


              Console.WriteLine("后序遍历");


              Tree.PostOrder postVisit=new DataStructure.Tree.PostOrder(vis);


              A.DepthFirstTraversal(postVisit);


 


              Console.WriteLine("中序遍历");


              Tree.InOrder inVisit=new DataStructure.Tree.InOrder(vis);


              A.DepthFirstTraversal(inVisit);                


         }


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本