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

原创 2004年02月03日 13:37:00

                          数据结构与算法(C#实现)系列---演示篇()<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

                                 Heavenkiller(原创)

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

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

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

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

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

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

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

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

 

 

using System;

using System.Collections;

 

namespace DataStructure

{

     /// <summary>

     /// Class1 的摘要说明。

     /// </summary>

     class Show

     {

         /// <summary>

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

         /// </summary>

         [STAThread]

         static void <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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();//演示一个三叉树的AttachDetach

                            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);

             

             

         }

可视化的数据结构 - 各种算法动画演示

1. 2. 很酷的各种排序演示:
  • BigLeo
  • BigLeo
  • 2014年11月17日 22:23
  • 15732

【算法】java版红黑树算法的完整实现及swing界面演示程序

【前言】 当初因为觉得数据结构及算法是码农的基础(正如锄头对农民一样)才决定话费时间来补习的,但是真正自行实现算法及算法的可视化演示的时候才发现难度是如此之大。 算法写起来慢,swing界面写起来...
  • cdnight
  • cdnight
  • 2013年08月30日 11:16
  • 2624

视图动画学习算法和数据结构(一)(<Garry进阶(四)>)

转载请注明原出处:http://blog.csdn.net/lrs123123/article/details/43114619 这是一个写给自己复习温习的博文,不喜勿喷  ,结合视图动画学习数据...
  • lrs123123
  • lrs123123
  • 2015年01月25日 14:56
  • 1127

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

                       数据结构与算法(C#实现)系列---演示篇(二)                            Heavenkiller(原创)         ...
  • heavenkiller
  • heavenkiller
  • 2004年02月03日 13:37
  • 1198

数据结构与算法系列----Sunday算法详解

Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配。Sunday算法的思想和BM算法中的坏字符思想非常类似。差别只是在于Sunday算法在失配之后,是取目标串中当前和模式...
  • LaoJiu_
  • LaoJiu_
  • 2016年02月29日 19:38
  • 5288

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

                   数据结构与算法(C#实现)系列---演示篇(三)                            Heavenkiller(原创)          pub...
  • heavenkiller
  • heavenkiller
  • 2004年02月03日 13:37
  • 1245

《数据结构与算法C#语言描述》笔记目录

前言 书中,正则表达式、和散列表部分撰写内容不够丰富。通书更适合作为引入性的介绍、了解。 本书原版书名为:Data Structures and Algorithms Using C#。出版时间是...
  • Maths_bai
  • Maths_bai
  • 2012年10月07日 23:44
  • 2403

C语言-数据结构-二叉排序树与平衡树算法实现及演示

这个程序是我05年2月份学数据结构时候,老师说让我做个演示程序时候做的一个最初版本程序。当然这不是教给老师的演示程序版本,演示版本的算法是套用书上的(清华-严老师),这版本算法是我自己写的,所以我不能...
  • hbyufan
  • hbyufan
  • 2006年04月29日 05:12
  • 13751

【数据结构与算法】c# Dictionary内部实现

新手:习惯、激情、方向 组建知识网,前期不在乎得失和性价比 Dictionary咋用的? Dictionary dic = new Dictionary(); ...
  • TW_345
  • TW_345
  • 2017年03月13日 21:12
  • 1142

数据结构中的7种排序算法

数据结构中的7种排序算法排序是将一个记录的任意序列重新排列成一个按键值有序的序列。 时间复杂度主要考虑元素的移动次数。 结构如下: 1.直接插入排序 1,定义:依次将待排序序列中的每一个记录...
  • Decorator2015
  • Decorator2015
  • 2016年03月31日 16:12
  • 1375
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构与算法(C#实现)系列---演示篇(一)
举报原因:
原因补充:

(最多只允许输入30个字)