2012版《数据结构A》课程实验指导书_第1页
2012版《数据结构A》课程实验指导书_第2页
2012版《数据结构A》课程实验指导书_第3页
2012版《数据结构A》课程实验指导书_第4页
2012版《数据结构A》课程实验指导书_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构A课程实验指导书Data Structure Course Design课程编号:06311360学时: 15学分:1先修课程:程序设计基础、面向对象程序设计 适用专业:计算机科学与技术、网络工程、软件工程一、实验目的数据结构A课程是计算机科学与技术及其相关专业的一门重要的专业基础 课。在课堂教学中,比较全面、概括性地讲述数据结构学科中一些基础性知识、重 要概念及各种算法,通过该实验教学和学生的上机实践,将这些基础性知识、重要 概念及各种算法,在计算机上编程实现,使学生能够达到以下实验教学目标:掌握计算机处理数据的基本方法;了解算法的时间及空间分析方法;能够为实际应用所涉及的数据选择适

2、当的逻辑结构、存储结构及相应的算法;通过在计算机上编程实现课程中介绍的各种算法,在程序设计能力方面得到提 升。二、上机实验总体要求每位同学准备一个实验本,上机前作好充分的准备工作,预习本次实验的内容 事先熟悉与实验有关的软硬件环境,编写好程序代码,供上机时使用。实验时遵守实验室的规章制度,爱护实验设备,原则上每人固定实验设备,对 于实验设备出现的问题,要及时向指导老师汇报。编程序过程中要注意多存盘,避免由于死机等原因造成的不必要的重复录入。内部文档要求:每个源文件和头文件都必须在文件首部的注释中注明设计者姓名,项目名(即我们的上机题目名),创建日期和最近一次修改日期。包含main ()函数的源

3、文件必须在首部注释后另加一段注释,简要描述一下程序的目的和用到 的主要数据结构。文件注释格式如下:文件名称:项目名称:创建者:创建时间:最后修改时间:功能: 文件中的函数名称和简单功能描述: 文件中定义的全局变量和简单功能描述: 文件中用到的他处定义的全局变量及其出处: 与其他文件的依赖关系:每个类必须包含首部注释块,适度地描述这个类的目的。类的首部注释应该紧挨着放在类的声明(一般在头文件里)前面。类的注释格式如下: 类名称:定义该类的目的:类属性: 类中函数及功能: 与其他类的关系(调用/被调用哪类对象中的什么函数):每个函数必须有首部注释块,描述该函数的简要功能,每个参数的逻辑含义(包括它

4、是输入还是输出或者输入/输出),函数调用之前的预备条件,返回后 的处理,返回值(如果有的话),该函数要调用到的函数列表(如果有)。这 些函数头注释可能和函数原型或函数实现放在一起。应该注意到:这项要求 不仅适合于单独的函数,同样适合于类的成员函数。函数的注释格式如下: 函数名称:函数功能描述: 函数调用之前的预备条件:返回后的处理: 返回值(如果有的话): 函数的输入参数: 函数的输出参数: 函数的抽象算法(伪码): 函数与其他对象中函数的调用和被调用关系:所有局部变量或常量的声明后应该简要说明一下他们的含义和用途。主要的控制结构,例如循环或分支结构,应该在前面注明将要完成什么功能。采用清晰一

5、致的缩进格式和其他格式化风格(例如括号的定位)来提高代码 可读性。过程代码要求标识符名称(常量、变量、函数、类等等)应该具有描述性,便于理解。要用到某个常数时,最好设置一个常量来代替这个数字。采用枚举类型来表示内部标签和状态的分类。任何情况下都不要用全局或文件范围变量。但是允许采用全局范围内的类型 定义(包括类定义)。采用适当的途径传递函数参数。当被调用函数需要修改实参的值时一般只采 用引用传参。当被调用函数只需改变形参(调用内部)而保持实参不变时采 用传值传参。采用string对象来存储字符串数据(除了单个字符),而不用字符数组来表示。采用I/O流代替C风格的I /0。面向对象的代码要求尽量

6、采用类。不要用成员函数来实现结构类型。一般来讲,建议采用类模板来表示容器型结构,如列表、树等,以提高可重 用性。设计类时,每个类都具有比较好的完整性(即该类的数据成员和函数成员具 有比较好的内聚性和一致性,不要把不相干的东西凑合在一起,也不要把相 关的东西生生拆散)。类的所有数据成员都应该是私有的。很多情况下,类的某些成员函数应该也是私有的。视情况而定。所有访问型指针都尽可能加const修饰(以区别于引用型指针)。如果一个类数据成员是一个指向动态分配内存的指针,要求写出析构函数来 释放内存;并写出一个用于复制对象的构造函数(copy constructor),而且 写出赋值操作的重载运算(as

7、signment operator overload)仅当有必要时才采用继承机制。尽量少使用MFC库中的类,可以适当地使用STL的类(但是,如果同学们对 于最基本的数据结构,例如栈、队列等还不熟悉的情况下,还是尽量自己来 编写基本类)。如果要编图形界面,请尽量把与编译环境(如V C、C+ Builder) 有关的类限制在少数几个文件中。也就是说,尽量把算法部分和界面部分的 源程序分割开来。当然,string类例外,大多数情况下同学们可以用它来替 代chat *类型。三、上机实验报告提交要求 按时完成各个实验,实验结束后应完成实验报告,并以打印或电子文档的形式提 交。实习报告内容参见各实验。实验

8、报告提交时打一个zip (或rar)压缩包,zip (或rar)压缩包文件名统一采用 以下格式命名:班级-学号-姓名-实验题号-版本号zip(或为:班级-学号-姓名-实验题号-版本号rar)例:计算机科学与技术专业2002级1班学号为03的姓名是王三的学生的第4个实验 的第1个版本的文件名为:jsjO21-03-王三-4-1zip (或为jO21-03-王三-4-1rar)各专业对应的缩写如下:(1)计算机科学与技术一jsj(2)信息安全一xa(3)网络工程一wl(4)软件工程一rjzip (或rar)压缩包中应含有:(1)readme.txt文件,把你的程序运行环境、编译运行步骤、程序功能等

9、等简 单说明一下。(2)附加了足够注释的源程序以及相关的项目和资源文件。四、实验安排实验一 单链表操作(一)实验内容单链表的创建、合并和输出。(二)实验目的熟悉用Visual C+进行程序设计的方法。掌握单链表的创建、查找、插入和合并等运算。(三)实验题目本实验要求实现以下功能:从键盘输入顺序任意的5个整数,按有序插入的要求生成第一个有序单链表, 将该链表输出显示。再从键盘输入顺序任意的5个整数,按有序插入的要求生成第二个有序单链 表,将该链表输出显示。将这两个有序单链表合并成一个有序单链表,要求使用两个单链表的原有空 间进行合并,将生成的有序单链表输出显示。测试数据】输入第一组整数:23 4

10、5 11 78 34 输出的有序单链表应为:11,23,34,45,78输入第二组整数:90 13 45 66 10 输出的有序单链表应为:10,13,45,66,90 合并两个单链表,输出合并后的结果应为:10,11,13,23,34,45,45,66,78,90(四)实验报告1. 实验题目。程序中使用的数据结构及符号说明。程序的主要流程图。程序主要模块的功能说明。程序运行时的初值和运行结果。源程序并附上注释。收获及体会。实验二 二叉树操作(一)实验内容 二叉树的建立和遍历。(二)实验目的进一步掌握指针变量的使用。掌握二叉树的结构特征以及各种存储结构的特点及使用范围。掌握用指针类型描述、访问

11、和处理二叉树的运算。掌握栈或队列的使用。(三)实验题目 本实验要求实现以下功能:按前序次序建立一棵二叉树,以表示空。中序、后序遍历该二叉树,输出遍历序列。求出该二叉树的深度并输出,或求出该二叉树的叶子数目并输出。试以栈为辅助存储结构实现二叉树的前序非递归算法或以队列为辅助存储 结构实现二叉树的层次遍历算法。【测试数据】输入以下字符串,建立二叉树:ABC#DE#G#F#输出中序遍历序列应为:CBEGDFA 输出后序遍历序列应为: CGEFDBA 输出二叉树的深度应为: 5 输出二叉树的叶子数目应为: 3(四)实验报告1. 实验题目。程序中使用的数据结构及符号说明。程序的主要流程图。程序主要模块的

12、功能说明。程序运行时的初值和运行结果,画出该二叉树的形态源程序并附上注释。收获及体会。实验三 图的操作(一)实验内容 图的生成和图的遍历。(二)实验目的掌握图的基本存储方法邻接表和邻接矩阵。熟练掌握图的两种遍历方法。(三)实验题目 本实验要求实现以下功能:以邻接矩阵或邻接表作为存储结构建立一个无向图。按深度优先遍历该无向图,输出遍历序列。按广度优先遍历该无向图,输出遍历序列。 【测试数据】无向图如下所示。四)实验报告1. 实验题目。2. 程序中使用的数据结构及符号说明。程序的主要流程图。程序主要模块的功能说明。程序运行时的初值和运行结果,画出该无向图的形态,写出其邻接矩阵或邻 接表。源程序并附

13、上注释。收获及体会。实验四 查找操作(一)实验内容二叉排序树的建立、二叉排序树中结点的查找(二)实验目的熟悉二叉排序树的定义。理解二叉排序树的建立过程。掌握二叉排序树中查找结点的算法。(三)实验题目本实验要求实现以下功能:对从键盘输入的顺序任意的若干个正整数建立一颗二叉排序树,以-1作为结 束。按先序、中序和后序遍历该二叉排序树,输出每种遍历的结果。3. 从键盘输入一个整数,在二叉排序树中查找,给出是否查找成功的结果。 【测试数据】输入序列:67 13 11 88 45 9 60 20 -1输出先序遍历序列应为:67 13 11 9 45 20 60 88输出中序遍历序列应为:9 11 13

14、20 45 60 67 88输出后序遍历序列应为:9 11 20 60 45 13 88 67 输入要查找的整数:45输出查找结果:查找成功输入要查找的整数:55输出查找结果:查找失败四)实验报告1. 实验题目。2. 程序中使用的数据结构及符号说明。程序的主要流程图。程序主要模块的功能说明。程序运行时的初值和运行结果,画出该二叉排序树的形态源程序并附上注释。收获及体会。实验五 内部排序操作(一)实验内容快速排序。(二)实验目的1. 熟悉各种内部排序算法的思想。2. 理解快速排序算法。(三)实验题目 本实验要求实现以下功能:对从键盘输入的顺序任意的8个正整数,通过快速排 序使之成为有序的序列。输出每一趟排序的结果。【测试数据】输入序列:49 38 65 97 76 13 50 27输出的每一趟排序的结果应为:初始序列: 4938659776

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论