《数据结构》课程实验指导书.docx
《《数据结构》课程实验指导书.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程实验指导书.docx(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据构造课程实 验 指 导 书河南理工大学地理信息系统专业2023年 九月前 言数据构造是计算机科学与技术及 GIS 专业的一门重要专业根底课,它主要介绍线性构造、树型构造、图状构造三种规律构造的存储实现,在此根底上介绍一些典型算法,以及算法的时间、空间效率分析。这门课程的主要任务是培育学生的算法设计力气及良好的程序设计习惯。通过本课程的学习,使学生娴熟地把握数据构造的内在规律关系及其在计算机中的表示方法存储构造,以及相关根本操作的算法实现;把握典型算法的设计思想及程序实现;生疏各种数据构造在 GIS 软件开发、程序设计中的根本应用;培育和训练学生结合实际应用,依据实际问题选取适宜的数据构造、
2、存储方案设计出简洁、高效、有用的算法;并为学习空间数据库原理、GIS 设计与开发等后续课程和研制开发各种系统和应用软件打下扎实的理论与实践根底。学习这门课程,习题和试验是两个关键环节。学生理解算法,上机试验是最正确的途径之一。因此,试验环节的好坏是学生能否学好数据构造的关键。为了更好地协作学生试验,特编写此试验指导书。试验指导书依据试验教学大纲的要求,为每个主要的学问点精选了的典型的试验题目,对每个试验题目提出具体实现要求,并对算法的实现进展提示,期望对同学们完成试验有所帮助。名目试验一 线性表的链表实现类的设计1试验二 挨次栈的自定义类设计2试验三 字符串的操作类设计3试验四 树和二叉树的自
3、定义类的设计4试验五 图的最短路径算法设计5试验六 自定义类应用综合设计6试验一线性表的链表实现类的设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握 C+面对对象类的设计和用VC+上机调试线性表的根本方法;2、 把握线性表的根本操作,如插入、删除、查找,以及线性表合并等运算在链式存储构造上的运算;并能够运用线性表根本操作解决问题,实现相应算法。二、试验要求:1、 C+完成类的设计及根本操作算法并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:设计你的线性表的链式存储构造类,编程实现通过键盘输入数据建立链表、查找、插入结点、删除结点、显示链表以及两链表的合并运
4、算等操作。测试数据例如:(1) 以 L1=0, 5, 9, 10, 12, 12, 17, 20, 24构造链表;(2) 找到重复的其次个元素 12 并删除它;(3) 在第五个元素后插入 55;(4) 生成L2 = 33, 45, 50的链表并将它与L1 的链表合并。注: 也可以完成课本其次章习题 2.14 题P85的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试
5、数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验二挨次栈的自定义类设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握用VC+上机调试通过栈的挨次存储构造类的设计;2、 把握挨次栈的根本操作,如进栈、出栈、推断栈空和栈满,取栈顶元素等运算在挨次存储构造上的运算;并能够运用栈的根本操作解决问题,实现相应算法。二、试验要求:1、 C+完成类的设计及根本操作算法并上机调试通过。2
6、、 撰写试验报告,供给试验结果和数据。三、试验内容:设计你的栈的挨次存储构造类,编程实现栈的根本操作。栈中的数据元素类型最好为字符类型,便利今后对字符串的算法设计和应用。测试数据例如:(1) 以“ABCDEFG”的字符串挨次进栈;(2) 以适宜挨次出栈得到序列“CDBAGFE”;(3) 取栈顶元素得到F;(4) 进栈直到栈满和出栈直到栈空,检验对这两种情形的正确推断和处理。注: 也可以完成课本第三章习题 3.13 题P132的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试
7、数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验三字符串的操作类设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 把握动态安排空间的字符串的挨次存储类的设计;2、 把握实现字符串的根本操作,如求串的长度、串的比较、复制、串的连接,取子串、子串匹配定位和串替换等运算。二
8、、试验要求:1、 C+完成类的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:用堆安排存储表示串,实现串的比较、复制、串的连接,取子串、子串匹配定位和串替换等根本操作。测试数据例如:(1) 以“abcde”构造一个串s1,以“gabcdef”构造另一个串s2;(2) 比较s1 和s2 是否相等;(3) 在 s2 中定位s1 子串;(4) 复制s2 串并连接在s1 串后。注: 也可以完成课本第四章习题 4.17 题P185的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试
9、通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验四树和二叉树的自定义类的设计试验类型: 验证性试验学时:2 学时一、试验目的:1、 进一步把握树的构造及非线性特点,递归特点和动态性。2、 稳固对指针的使用和二叉树的三种遍历方法、建立方法及树的输入输出。二、
10、试验要求:1、 C+完成类的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:实现二叉树的遍历,实现先序、中序和后序递归遍历算法; 利用栈实现二叉树先序、中序遍历的非递归算法。测试数据例如:(1) 以层序遍历序列为 abcdefghijklmn 构造一棵二叉树;(2) 分别输出其先序、中序和后序遍历结果;注: 也可以完成课本第五章习题 5.37 题P250的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上
11、机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验五 图的最短路径算法设计试验类型: 验证性试验学时:2 学时一、试验目的:了解最短路径的概念,把握求最短路径的方法(Dijkstra 算法或Floyd 算法)。二、试验要求:1、 C+完成图的相关类及算法的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内
12、容:建立一个包含 6 个结点的带权有向图,并求顶点V0到其它顶点的最短路径。测试数据由同学们自行选择。注: 也可以完成课本第八章习题 8.23 题P395的代码设计作为本次课堂试验内容。四、仪器设备: 计算机、VC+编译环境五、试验方法:用 C+语言设计类,并实现相关类的根本操作,程序在VC+环境下调试通过。并选择恰当的测试数据验证算法的正确性。六、试验步骤:1、 在上机前提前完成设计代码;2、 程序调试通过,可运行;3、 通过测试数据和对象方法调用验证算法正确性。七、试验结果处理:对程序调试中的问题要进展总结。八、试验留意事项:独立完成试验及试验报告,抄袭者不给成绩。九、预习与思考题:见课堂
13、讲授课件和作业布置。十、试验报告要求:本门课程试验报告格式见 附件 1,鼓舞手写,可以打印。试验六 自定义类应用综合设计试验类型: 综合性试验学时:2 学时一、试验目的:1、 进一步把握各种数据构造的特点和适合解决问题的分析;2、 通过具体的有实际应用意义的问题解决和对前面设计的类的使用进一步提高程序设计力气和算法设计、分析力气。3、 考察学生的程序设计中的规律思维力气和觉察软件开发人才。二、试验要求:1、 完成程序或简洁系统的设计并上机调试通过。2、 撰写试验报告,供给试验结果和数据。三、试验内容:从下面给出的题目中选做其中的一题多做可加分:1. 约瑟夫环问题1问题描述:有编号为1, 2n
14、的 n 个人按顺时针方向围坐一圈,每人持有一个正整数密码。开头给定一个正整数 m,从第一个人按顺时针方向自1 开头报数,报到m 者出列,不再参与报数,这时将出列者的密码作为m,从出列者顺时针方向的下一人开头重自 1 开头报数。如此下去,直到全部人都出列。试设计算法,输出出列者的序列。2试验要求: 承受链式存储构造实现。3) 实现提示:用链式存储解决此问题时可以承受循环链表。2. 停车场治理问题1) 问题描述:设有一个可以停放 n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场的早晚依次从停车场最里面对大门口处停放(最先到达的第一 辆车放在停车场的最里面)。假设停车场已放满
15、n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车走开,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必需先退出停车场为它让路, 待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。假设停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且照旧保持在便道上等待的车辆的次序。编写程序模拟该停车场的治理。2) 试验要求: 要求程序输出每辆车到达后的停车位置停车场或便道上,以及某辆车离开停车场时应缴纳的费用和他在停车场内停留的时间。 3实现提示:以栈模拟停车场,以队列模拟便道
16、,依据从终端读入的车辆“到达”“离开”信息模拟停车场治理。3. 实现一个哈夫曼编/译码系统 1问题描述:利用哈夫曼编码进展信息通信可以大大提高信道利用率,缩短信息传输 时间,降低传输本钱。但是,这要求在发送端通过一个编码系统对待传输数据预先编码, 在接收端将传来的数据进展译码。对于双工信道,每端都需要一个完整的编码/译码系 统。试为这样的信息收发站写一个哈夫曼的编/译码系统。 2试验要求:一个完整的系统应具有以下功能:(1) I:初始化(Initialization)。从终端读入字符集大小 n,以及 n 个字符和n 个权值, 建立哈夫曼树,并将它存于文件hfmTree 中。(2) E:编码(E
17、ncoding)。利用已建好的哈夫曼树对文件ToBeTran 中的正文进展编码, 然后将结果存入文件CodeFile 中。(3) D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile 中的代码进展译码, 结果存入文件TextFile 中。(4) P:打印代码文件(Print)。将文件CodeFile 以紧凑格式显示在终端上,每行 50 个代码。同时将此字符形式的编码文件写入文件CodePrin 中。(5) T:打印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。3) 实现提示:
18、(1) 文件CodeFile 的基类型可以设为字节型。(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“ Q”,表示退出运行 Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单,直至某次用户选择了“E”为止。(3) 在程序的一次执行过程中,第一次执行I、D 或 C 命令之后,哈夫曼树已经在内存了,不必再读入。每次执行中不愿定执行I 命令,由于文件hfmTree 可能早已建好。4. 利用最小生成树算法解决通信网的总造价最低问题1问题描述:假设在 n 个城市之间建通信网络,秩序架设 n-1 条线路即可。如何以最低的经济代价建设这个通信网,是一个网络的最小生成树问题。
19、2试验要求:利用克鲁斯卡尔算法求网的最小生成树3) 实现提示:通信线路一旦建立,必定是双向的。因此,构造最小生成树的网确定是无向网。为简洁起见,图的顶点数不超过10 个,网中边的权值设置成小于 100。5. 教学打算编制问题 1问题描述:软件专业的学生要学习一系列课程,其中有些课程必需在其先修课完成 后才能学习。 2试验要求:假设每门课程的学习时间为一个学期,试为该专业的学生设计教学打算, 使他们能在最短时间内修完专业要求的全部课程。3) 实现提示:以顶点代表课程,弧代表课程的先后修关系,按课程先后关系建立有向无环图。利用拓扑排序实现。6. 公交线路优化路径的查询【问题描述】对于某城市的公交线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 实验 指导书
限制150内