GithubHelp home page GithubHelp logo

dsagl's Introduction

数据结构与算法实验要求

部分代码源自课本讲义

新建空白解决方案 exp.sln

实验一:数组和类的定义与项目的管理

在新的解决方案中新建一个控制台应用程序类型的项目 exp1app

  • 定义一个含Main方法的类ArrayTest.cs,在其中定义和随机初始化一个具有20个元素、值域在-99到99的整数数组,在数组中查找特定数据,对数组中的数据进行排序。重新随机初始化数组,对数组中的数据按绝对值大小进行排序
  • 定义一个含Main方法的类GenericList.cs,在其中利用List<T>类定义和初始化一个int类型的线性表,在表中添加Add和插入Insert新的元素;定义一个自定义Student类,定义和初始化一个Student类型的线性表,在表中添加Add和插入Insert新的元素
  • 定义一个含Main方法的类GenericMethod.cs,在其中利设计一个泛型方法swap,能交换不同类型的两个变量的值
  • 设计定义一个复数类Complex.cs,实现复数的基本操作
  • 定义一个含Main方法、测试复数类的类ComplexTest.cs,测试复数的基本操作
  • 定义一个含Main方法的类FileStreamTest.cs,在其中打开、读入文本文件,将其内容逐行输出到一个新文件,实现文件的拷贝,记录和显示拷贝过程的时间

实验二:线性表的设计与实现

在解决方案中新建一个控制台应用程序类型的项目 exp2app 和类库型项目 exp2lib

  • exp2app中定义一个含Main 方法的类GenericList.cs,在其中利用List<T>类定义和初始化一个int 类型的线性表,在表中添加Add和插入Insert新的元素;定义一个自定义Student 类,定义和初始化一个Student类型的线性表,在表中添加Add和插入Insert新的元素
  • exp2lib 中编程实现一个包含起标志作用的头结点的单向链表类。它的头结点不包含数据元素,仅起标志作用,头结点的链指向链表的第一个数据结点;设计泛型链表类SingleLinkedList 和结点类和SingleLinkedNode
  • 使用线性表类求解约瑟夫Josephus环问题

实验三:栈与队列的设计与实现

在解决方案中新建一个控制台应用程序类型的项目 exp3app 和类库型项目 exp3lib

  • 数制转换:在exp3app 中定义一个含Main 方法的类 Dec2Hex.cs,在其中利用Stack<T>类定义和初始化一个int 类型的栈对象,将10 进制整数转换为16 进制整数,输出结果
  • 利用队列和栈将一个序列反序:在exp3app 中定义一个含Main 方法的类Queue2Stack.cs,在其中利用Queue<T>类定义和初始化一个int 类型的队列对象,借用一个栈对象将队列中的原序列反序,输出反序后的结果
  • exp3lib中编程实现自定义栈类SequencedStack与队列类SequencedQueue
  • 表达式求值:将中缀表达式转换为后缀表达式,再求后缀表达式的值

实验四:树与二叉树的设计与实现

在解决方案中新建一个控制台应用程序类型的项目 exp4app 和类库型项目 exp4lib

  • exp4lib 中编程实现自定义链式存储的二叉树结点类 BinaryTreeNode 和二叉树类BinaryTree,实现先根、中根和后根次序遍历和按层次遍历二叉树的操作;在二叉树类BinaryTree 的定义中, 编程实现静态方法ByOneList(IList<T> t),参数t 表示顺序存储的完全二叉树结点值序列,由此建立链式存储结构的完全二叉树
  • exp4app 中编写一个测试程序BinaryTreeTest,构建一颗二叉树实例,输出先根、中根、后根次序及按层次遍历得到的序列;编写一个测试程序ByOneListTest,构建一颗完全二叉树实例,输出先根、中根、后根次序及按层次遍历得到的序列
  • 在二叉树类BinaryTree 的定义中,编程实现静态方法ByOneList(IList<T> sList, ListFlagsStruc<T> ListFlags),它的第一个参数是二叉树的广义表表示式,第二个参数定义广义表表示式所用的分界符,该方法根据特定的广义表表示式建立链式存储结构的二叉树;在exp4app 项目中编写一个测试程序ByOneListGTest,构建一颗二叉树实例,输出先根、中根、后根次序及按层次遍历得到的序列
  • 编写一个Windows 窗体应用程序 exp4xapp :包括以下MenuStripTreeView等控件

实验五:查找表结构和算法的设计与实现

在解决方案中新建一个控制台应用程序类型的项目 exp5app 和类库型项目 exp5lib

  • exp5app中定义一个含Main 方法的类SearchInArray.cs,在其中定义和随机初始化一个具有5000 个元素、值域在0 到999 的整数数组,在数组中查找指定值的20 个数据;对数组中的数据进行排序,然后在数组中二分查找这20 个数据并比较两种查找算法所花费的不同时间
  • 在上一步的基础上将数组改为Dictionary并比较这两种数据结构下花费时间的不同
  • exp5lib 中编程实现自定义的顺序查找表类LinearSearchList,实现其中的造表AddInsert、顺序查找IndexOf、二分查找 BinarySearch算法;在exp5app 项目中定义一个含Main 方法的测试类LinearSearchListTest.cs,在其中定义和随机初始化一个查找表,测试顺序查找和二分查找算法
  • exp5lib中设计并编程实现自定义的哈希链表类HashSearchList,实现其中的造表与查找算法HashAdd, Search;在exp5app项目中定义一个含Main 方法的测试类HashSearchListTest.cs,在其中定义和随机初始化一个Hash 查找表,测试Hash 查找算法
  • 编写一个Windows 窗体应用程序 exp5xapp :其中编写一份XML 文件robots.xml,包含一组数据,具有IDNameIQ 等字段;该应用程序可以让用户通过姓名查找相应的数据(利用LINQ语句)

实验六:排序算法的实现与分析

在新的解决方案中新建一个控制台应用程序类型的项目 exp6app 和类库型项目 exp6lib

  • exp6app中定义一个含Main 方法的类SortArrayTest.cs,在其中定义和随机初始化一个具有20 个元素、值域在-99 到99 的整数数组,对数组中的数据进行排序;重新随机初始化数组,对数组中的数据按绝对值大小进行排序
  • exp6app 中定义一个含Main 方法的类SortArrayByTest.cs,在其中定义一个Robot 类型的数组并初始化,然后按Robot 的不同字段进行排序;自定义一个Robot 类型及各种比较的方式Robot.cs
  • exp6lib中编程实现自定义的排序算法类Sort,实现 InsertSortBubbleSortQuickSortSelectSort 等算法;在exp6app中定义一个含Main 方法的测试类SortAlgorithmTest.cs,测试不同的排序算法
  • 编写一个Windows 窗体应用程序 exp6xapp :在实验五的基础上增加功能可以让用户通过菜单选择按不同的关键字对数据进行排序

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.