1、数据结构(C#)实 验 指 导 书、上机实验的指导思想和要求1.1 上机实验的目的上机实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。上机实验的目的是:(1) 加深对讲授内容的理解,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,通过多次上机,就能自然地、熟练地掌握。 (2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C#程序开发的环境。一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。使用者应该了解为了运行一个C#程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来
2、帮助自己开发程序。每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。(3)学会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,还要求自己动手实现。对程序设计来说,则要求会编程序并上机调试通过。因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重
3、要的内容和基本要求,应给予充分的重视。调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。别人的经验不能代替自己的经验。调试程序的能力是每个程序设计人员应当掌握的一项基本功。因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。甚至于“自设障碍”,即把正确的程序改为有错的,观察和分析所出现的情况。这样的学习才会有真正的收获,是灵活主动的学习而不是呆板被动的学习。1.2 上机实验前的准备工作在上机实验前应事
4、先做好准备工作,以提高上机实验的效率,准备工作至少应包括:(1)了解所用的计算机系统的性能和使用方法;(2)复习和掌握与本实验有关的教学内容;(3)准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。初学者切忌不编程序或抄袭别人程序去上机,应从一开始就养成严谨的科学作风;(4)对运行中可能出现的问题事先做出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意:(5)准备好调试和运行时所需的数据。1.3实验报告要求、实验考核方式、内容及成绩评定标准实验报告要求:报告为电子形式,要求学生独立认真完成并在实验结束前提交实验报告。实验考核方式、内容:实验课
5、的出勤情况,程序的编制、调试与运行情况,实验报告情况。实验考核方式、内容及成绩评定标准:1没有完成实验的基本要求,不及格2没有提交实验报告,不及格3实验报告抄袭者,不及格4违反实验纪律,不及格5独立完成实验,但实验报告中错误较多,及格6完成实验基本要求,实验报告符合基本要求,有一些错误,中7完成实验基本要求,实验报告符合要求,有较少错误,良好8完成实验要求的基础上,实验报告符合符要求,很少错误,优秀二、实验内容实验一 线性表的操作(1)【实验目的】1、熟悉集成开发环境Microsoft Visual Studio 2010,在此环境下能够创建程序。2、掌握建立顺序表的基本方法。3、理解和掌握顺
6、序表的基本运算思想和实现。【实验内容】 设计顺序表的基本运算,并用相关数据进行测试。(1)新建一个Windows应用程序项目SqList。(2)设计顺序表的基本运算类SqListClass,类的代码放在Class1.cs文件中,对应代码见SqListClass.txt文件。(3)设计对应的窗体Form1,其设计界面如图所示,用户输入元素序列,以逗号分隔元素,然后按命令按钮提示进行操作。实验二 线性表的操作(2)【实验目的】 1、掌握建立单链表的基本方法。2、理解和掌握单链表的基本运算思想和实现。【实验内容】设计单链表的基本运算。(1)新建一个Windows应用程序项目SqList。(2)设计单
7、链表表的结点类LinkList和基本运算类LinkListClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体Form1,其设计界面如图所示,用户输入元素序列,以逗号分隔元素,然后按命令按钮提示进行操作。实验三 栈、队列的操作【实验目的】 1、熟练掌握栈的基本操作。2、熟练掌握队列的基本操作。【实验内容】设计栈和队列的基本运算。(1)新建一个Windows应用程序项目StackQueue。(2)设计顺序栈类SqStackClass、链栈类LinkStackClass、顺序队列类SqQueueClass和链队列类LinkQueueClass,
8、类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体Form1,其设计界面如图所示,然后按命令按钮提示进行操作。实验四 二叉树的操作(1)【实验目的】1、掌握二叉树的创建算法;2、掌握二叉树的输出算法。【实验内容】设计二叉树的基本运算。(1)新建一个Windows应用程序项目BTree1。(2)设计二叉树的结点类型类BTNode和二叉树类BTNodeClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体Form1,其设计界面如图所示,用户输入使用括号表示法表示的一棵二叉树,然后按命令按钮提示进行操作。
9、实验五 二叉树的操作(2)【实验目的】1、掌握二叉树的创建算法;2、掌握二叉树的输出算法;3、掌握二叉树的遍历算法。【实验内容】在实验四的基础上,设计二叉树的基本运算。(1)新建一个Windows应用程序项目BTree1。(2)设计二叉树的结点类型类BTNode和二叉树类BTNodeClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体Form1,其设计界面如图所示,用户输入使用括号表示法表示的一棵二叉树,然后按命令按钮提示进行操作。实验六 图的操作【实验目的】1、掌握图的存储结构。2、理解和掌握图的深度和广度遍历算法。【实验内容】 边结点类
10、型、表头结点类型、图的邻接表类型定义如下:class ArcNode /边结点类型 public int adjvex; /该边的终点编号 public ArcNode nextarc; /指向下一条边的指针 public int weight; /该边的相关信息,如边的权值 ; struct VNode /表头结点类型 public ArcNode firstarc;/指向第一条边 ; struct ALGraph /图的邻接表类型 public VNode adjlist; /邻接表数组 public int n, e; /图中顶点数n和边数e;设计图的基本运算。(1)新建一个Window
11、s应用程序项目Graph。(2)设计图类GraphClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体,其设计界面如图所示,然后按命令按钮提示进行操作。实验七 排序()【实验目的】1、掌握直接插入排序的思想和实现。2、掌握快速排序的思想和实现。【实验内容】设计排序算法。(1)新建一个Windows应用程序项目Sort。(2)设计顺序表排序类InterSortClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体,其设计界面如图所示,然后按命令按钮提示进行操作。实验八 排序()【实验目的】1
12、、掌握堆排序的思想和实现。2、掌握希尔排序的思想和实现。3、掌握冒泡排序的思想和实现。【实验内容】设计排序算法,在上次实验基础上继续完善程序功能。(1)完善顺序表排序类InterSortClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体,其设计界面如图所示,然后按命令按钮提示进行操作。实验九查找【实验目的】1、掌握顺序查找的思想和实现。2、掌握折半查找的思想和实现。 2、掌握索引查找的思想和实现。【实验内容】设计顺序表查找算法。(1)新建一个Windows应用程序项目LineSearch。(2)设计顺序表查找类SqListSearchClass,类的代码放在Class1.cs文件中,对应代码见Class1.txt文件。(3)设计对应的窗体,其设计界面如图所示,实现顺序查找、折半查找和索引查找然,后按命令按钮提示进行操作。实验十 综合【实验目的】1、 复习线性表、排序、查找等相关知识。2、 掌握学生管理系统或综合测试。【实验内容】综合所学知识,完成学生管理系统的查询、插入删除、排序等操作或进行基础算法上机测试。16 / 16