当前位置:首页 > 日记 > 正文

数据结构与算法的C实现#系列演示

数据结构与算法的C实现#系列演示

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


         }


相关文章

新中国的迅驰无线局域网标准的实施

新中国的迅驰无线局域网标准的实施

迅驰,新中国,无线局域网,标准,电脑软件,11月26日,国家质量监督检验检疫总局和国家标准化管理委员会管理局联合发出通知,宣布两无线局域网开始实施强制性国家标准,自2003年12月1日起,将禁止进口、生产和销售不符合强制性国家标准的无线局域网产…

让Outlook自动将邮件发送到打印机

让Outlook自动将邮件发送到打印机

邮件,发送到,电脑软件,Outlook,情况往往是这样的:一个非常重要的邮件已收到,除了读者自己的阅读信件,他可能需要打印或存档的文件或提交给others.outlook提供了一个非常实用的功能。在收到电子邮件后,可以自动检测邮件的特殊标记,并在满足打印条…

实践经验-用Flash下载隐藏链接

实践经验-用Flash下载隐藏链接

链接,下载,实践经验,电脑软件,Flash,When I downloaded a few days ago, I found that clicking links can only be downloaded with IE, but it was depressed when I used FlashGet to suggest that it didn't contain a legitimate URL…

熟练修改ISO文件录音光盘中的隐藏

熟练修改ISO文件录音光盘中的隐藏

盘中,修改,文件,隐藏文件,熟练,在许多正面光盘中有许多隐藏的目录或文件。如果刻录CD时可以自己制作隐藏文件,那就不太好了。还有什么,跟我来吧! 原则一章 ISO 9660记录的光盘镜像文件的任何目录和文件有一定的格式、规定和记录,其中有第二十…

该法禁止Windows7弹出错误报告--禁

该法禁止Windows7弹出错误报告--禁

弹出,错误报告,该法,电脑软件,Windows7系统每次运行一个程序错误或程序没有反应的时间,报告会蹦出来。但如果你想禁用这些报告,系统不会记住你的错误检查,但它不能自动检测并修复它。有一个允许系统记录错误报告的方法和不弹出错误窗口。 运…

全球企业即时通讯收入1亿1900万美

全球企业即时通讯收入1亿1900万美

企业,即时通讯,收入,美元,全球,  Frost & Sullivan公司的最新报告,2003年全球企业即时消息(IM)市场收入1.19亿美元。随着企业日益了解公共IM系统带来的安全威胁,这个数字会继 续增长。   尽管公共IM技术在企业中非常流行,但从长远看它可…

腾讯否认与电信合作推新天空翼QQ

腾讯否认与电信合作推新天空翼QQ

腾讯,电信,天空,电脑软件,QQ,今天,网络谣言与腾讯腾讯合作推出新的天翼手机号码,QQ。这也表明,电信与腾讯签署了协议,在2010年底,从180节开始,逐渐扩展到所有段的133, 153, 180和189。预期中国电信与腾讯今年早期推出新的天翼QQ,这是移动电话号码…

VeryCD将删除在视听牌照交换盗版视

VeryCD将删除在视听牌照交换盗版视

牌照,删除,视听,视频,电脑软件,6月4日,传闻,视频下载网站VeryCD在不久的将来会获得广电总局的视听许可证,而为了满足广电总局的规定,VeryCD可能被删除而不会对视频网站的版权,并下载客户端搜索功能只能搜索国内源站。 上述人士表示,换届后,在Very…

22大缺陷:微软十月发布安全公告!

22大缺陷:微软十月发布安全公告!

缺陷,公告,电脑软件,微软公司发布10个安全公告(ms04-028)当地时间星期二披露其软件产品中发现的约22个新的缺陷的详细信息。 在这22个缺陷中,一个漏洞只会影响Windows NT服务器,另外3个关键缺陷可能会被运行IE的计算机系统攻击。Excel中的一个…

雅虎推出反垃圾邮件服务替代品

雅虎推出反垃圾邮件服务替代品

服务,推出,雅虎,替代品,反垃圾邮件,  新浪科技讯 9月2日,雅虎中国在中国互联网大会国际反垃圾邮件高峰论坛期间宣布,雅虎免费邮箱正式推出诱饵式反垃圾邮件服务----“替身邮”。与此同时,全球四大互联网巨头雅虎(YAHOO!)携手(Microsoft)、美…

禁用Windows更新防止USB失败--禁止

禁用Windows更新防止USB失败--禁止

服务,补丁,电脑软件,Windows,USB,现在发现很多笔记本电脑安装Windows7系统,自动更新微软提供的补丁后,会有USB接口的一些问题。它不能在短时间内使用,许多在线方法无法解决,因此我们必须重新安装系统。 重装系统后,为了使windows7系统不再自动…

制作办公软件的迷你版

制作办公软件的迷你版

办公软件,迷你版,电脑软件,                                                                                                    …