数据结构与算法实验指导书

上传人:tia****g98 文档编号:162478848 上传时间:2022-10-18 格式:DOC 页数:15 大小:61.51KB
收藏 版权申诉 举报 下载
数据结构与算法实验指导书_第1页
第1页 / 共15页
数据结构与算法实验指导书_第2页
第2页 / 共15页
数据结构与算法实验指导书_第3页
第3页 / 共15页
资源描述:

《数据结构与算法实验指导书》由会员分享,可在线阅读,更多相关《数据结构与算法实验指导书(15页珍藏版)》请在装配图网上搜索。

1、数据结构与算法实验指导书实验课程编号:07ZB101109 实验室名称:多媒体技术实验室系(院):数计学院 实验室地点:N5-402实验课学时:36实验类别:专业课 适用专业:计算机科学与技术是否独立设课:是 执笔人:李文新 审批人:一、实验课程教学目的和要求数据结构与算法是一门实践性很强的课程,光靠读书和做习题是不能提高实践能力的。数据结构与算法的实验与程序设计语言课程中的实验不同,后者更多的强调语言方面的功能实现,而前者更接近实际,需要同学们自己分析问题,设计模型和算法,再上机调试完成。数据结构与算法的实验的目的主要有两个:1)深化理解书本上的理论知识,将书本的知识变“活”(为已掌握,为已

2、活用);2)理论和实践相结合,学会将相关的数据结构和算法应用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力。数据结构与算法的实验类型1)验证性实验主要是验证教材中已有的数据结构和算法。2)设计性实验针对具体问题,应用某一个知识点,自己设计数据结构和算法,培养对数据结构的简单运用能力。3)综合性实验针对具体问题,应用某几个知识点,自己设计数据结构和算法,培养对数据结构的综合运用能力。数据结构与算法的实验安排项目实验题目学时说明一顺序表的保序插入操作2验证二单链表的操作2验证三循环单链表的插入和删除2设计四栈与队的操作2验证五栈与队的的应用2设计六栈与队的的应用2设计七对称矩阵的

3、压缩存储2验证八压缩矩阵的应用2设计九二叉树的操作2验证十二叉树的应用2设计十一二叉树的应用2设计十二图的操作2验证十三图的应用2设计十四图的应用2设计十五查找操作2验证十六查找应用2设计十七排序操作2验证十八排序应用2设计数据结构与算法实验的一般步骤1)需求分析:要对简单的问题描述进行详细的分析,充分理解问题,明确问题要求做什么,有什么数据,边界条件。2)概要设计:针对问题描述中涉及到数据定义抽象数据类型,设计数据结构和算法模型。本部分不必考虑实现的细节。3)详细设计:设计具体的存储结构(用C+实现抽象数据类型对应的类)。此外,还要设计对象间的调用关系及输入输出。4)上机调试(运行代码,修正

4、语法及逻辑错误)5)结果与总结数据结构与算法的实验要求:1)完成实验预习;2)完成并上交实验报告;3)完成电子设计文档预习/实验报告的格式要求:1)实验名称2)实验目的3)实验内容及要求4)概要设计:ADT 5)详细设计:C+类或C函数6)调试分析:7)结果与总结实验一: 顺序表的保序插入操作一、实验目的:1)掌握线性表的顺序存储结构与算法实现;2)掌握顺序表及其基本操作的实现。二、实验内容及要求:1)建立含有若干个元素并递增有序的顺序表;2)对已建立的顺序表实现保序插入、删除、查找、输出等基本操作。实验二: 单链表的操作一、实验目的:1)掌握线性表的链接存储结构;2)掌握链表及其基本操作的实

5、现。二、实验内容及要求:1)用头插法(或尾插法)建立带头结点的单链表;2)对已建立的单链表实现插入、删除、查找、输出等基本操作。实验三: 循环单链表的插入和删除一、实验目的:1)进一步掌握线性表的链接存储结构;2)掌握循环单链表及其基本操作的实现。二、实验内容及要求:1)用头插法(或尾插法)建立带头结点的循环单链表;2)在采用尾指针(rear)表示的循环单链表中,查找元素为x的结点,如果有则删除该结点;如果没有则插入到循环单链表的尾部。 操作接口 :T LinkListLDI(T x)实验四: 栈与队的操作一、实验目的:1)掌握栈和队的顺序与链接存储结构;2)掌握栈和队的操作特性;3) 掌握顺

6、序栈和链队列的基本操作的实现方法。二、实验内容及要求:1)分别建立一个空的顺序栈和空的链队列;2)对已建立的顺序栈和链队列实现插入、删除、取栈顶元素、取队头元素及输出等基本操作。实验五:栈与队的的应用(括号匹配问题)一、实验目的:1)掌握栈和队列的存储结构;2)掌握栈和队列的操作特性;3)掌握栈和队列基本操作的实现。二、实验内容及要求:括号匹配问题 在算述表达式中,可能出现嵌套的大、中、小括号,设计一个算法,可以判断给定的表达式串中的括号是否是匹配的。要求:首先,分别先定义一个栈和一个队;其次,将表达式串中的各种括号字符依次入队(其它字符不予考虑);最后利用栈来判断队中的括号是否是匹配的。无论

7、是什么括号,最后出现的左括号,必须与其后最先出现的右括号匹配,这符合栈的后进先出的特点,故我们可以用栈和进行匹配性判断。根据要求,串(括号) 队 栈操作接口:bool match(char *s)主要操作:队,栈初始化 括号字符入队 出队为左括号:进栈 出队为右括号:弹栈 匹配? 实验六:栈与队的的应用(表达式求值)一、问题描述:1)对一个合法的中缀表达式求值;2)假设表达式只包含+、4个双目运算符,且运算符本身不具有二义性。二、基本要求:1) 正确解释表达式;2) 符合四则运算规则;3) 输出最后的计算结果。三、设计思想:对中缀表达式求值,通常使用“算苻优先算法”。根据四则运算规则,在运算的

8、每一步中,任意两个相继出现的运算符t和c之间的优先关系至多是下面三种关系之一: tc:t的优先级低于c; tc:t的优先级等于c; tc:t的优先级高于c;为实现算苻优先算法,可以使用两个工作栈:一个栈OPTR存放运算符,另一个栈OPND存放操作数,中缀表达式用一个字符串数组存储。实验七:对称矩阵的压缩存储一、实验目的:1)掌握对称矩阵的压缩存储方法;2)掌握对称矩阵的压缩存储的寻址方法。二、实验内容:1) 建立一个nn的对称矩阵;2) 将对称矩阵用一维数组存储三、实现提示: 首先建立一个nn的对称矩阵A并初始化矩阵的元素。对称矩阵只须存储下三角部分,即将一个nn的对称矩阵用一个大小为n(n+

9、1)/2的一维数组SA来存储,则对称矩阵中的元素aij(ij)在SA中的下标k与i、j的关系为k=i(i+1)/2+j,元素aij(ij)在SA中的下标k与i、j的关系为k=j(j+1)/2+i。实验八:压缩矩阵的应用(稀疏矩阵的转置)一、问题描述:采用三元组顺序表存储稀疏矩阵并实现转置。二、基本要求:1) 设计存储结构实现稀疏矩阵的压缩存储;2) 设计算法实现稀疏矩阵的转置;3) 分析算法的时间复杂度和空间复杂度。三、设计思想:将稀疏矩阵的非零元素对应的三元组(行号、列号、非零元素值)所构成的集合,按行优先的顺序排列成一个线性表,对该线性表采用顺序存储结构,同时该矩阵的行数、列数和非零元素的

10、个数。将稀疏矩阵A转置为矩阵B的基本思想是:在A的三元组顺序表中依次找第0列、第1列最后一列的三元组,并将找到的每个三元组的行、列交换后顺序存储到B的三元组顺序表中。实验九:二叉树的操作一、实验目的:1)掌握二叉树的二叉链表存储结构;2)掌握二叉树的建立方法;3)掌握二叉树的遍历操作的算法实现。二、实验内容及要求:1) 利用扩展二叉树的先序遍历序列建立一个含有n个结点的二叉树,采用二叉链表存储;2) 进行各种遍历(先序,中序,后序,层序)该二叉树;求二叉树中叶子结点的个数; 求二叉树t的深度; 交换二叉树t的所有左右孩子并以中序遍历输出。3) 遍历算法分别用递归和非递归算法。实验十:二叉树的应

11、用求二叉树中叶子结点的个数和深度一、问题描述:已知一棵二叉树,求该二叉树中的叶子结点的个数。二、基本要求:1) 采用二叉链表存储结构;2) 设计非递归算法求二叉树中的叶子结点的个数和二叉树的深度并输出。三、设计思想:求二叉树中的叶子结点的个数,即求二叉树的所有结点中左、右子树均为空的结点之和。因此可以将此问题转化为遍历问题,在遍历中“访问一个结点”时判断该结点是不是叶子,若是则将计数器累加。实验十一:二叉树的应用(哈夫曼树和编码)一、问题描述:设某编码系统共有n个字符,使用频率分别为(w1,w2,wn)。设计一个不等长的编码方案,使用该编码系统的空间效率最好。二、基本要求:1) 设计数据结构;

12、2) 设计编码算法;3)分析算法的时间复杂度和空间复杂度。三、设计思想:利用Huffman编码树求得最佳的编码方案。根据哈夫曼算法,建立哈夫曼树时,可以将哈夫曼树定义为一个结构型的一维数组Huffman,保存哈夫曼树中各结点的信息,每个结点包括权值、左孩子、右孩子和双亲。由于哈夫曼树中共有2n1个结点。并且进行n1次合并操作,所以该数组的长度为2n1。 weigthlchildrchildparent在哈夫曼树中,设左分支为0,右分支为1,从根结点出发,遍历整棵哈夫曼树,求得各个叶子结点所表示字符的哈夫曼树编码。实验十二:图的操作一、实验目的:1)掌握图的存储结构;2)掌握构造邻接矩阵的方法;

13、3)掌握图的遍历算法的算法实现。二、实验内容及要求:按给定的任一连通无向图构造邻接矩阵,再进行深度优先遍历和广度优先遍历。实验十三:图的应用求无向连通图的生成树一、问题描述: 求无向连通图的一棵生成树。二、基本要求:1)采用邻接矩阵存储;2) 求深度优先生成树;3) 输出该生成树的每一条边。三、设计思想: 在一个连通无向图G=(V,E)中,如果从任一个顶点开始进行深度优先遍历,必定将边集E分成两个集合T和B,其中T是遍历过程中经历的边的集合,B是剩余的边的集合。显然,边集T和图G所有顶点一起构成连通图G的一棵生成树。因此,修改深度优先遍历算法,输出遍历所经过的边。实验十四:图的应用求有向图的路

14、径一、问题描述: 对于有向图G=(V,E),任意vi,vj (ij),判断从顶点vi到顶点vj是否存在路径。二、基本要求:1)有向图采用邻接矩阵存储;2) 设计算法完成问题求解;3) 设计存储结构存储从顶点vi到顶点vj的路径。三、设计思想: 可以利用深度优先遍历,从顶点vi出发进行深度优先遍历,如果在遍历过程中,访问到顶点vj,则从顶点vi到顶点vj存在路径。因此,修改深度优先遍历算法,判断在遍历中是否访问顶点vj。实验十五:查找操作一、实验目的:1)掌握顺序查找技术和拆半查找技术;2)掌握查找的算法实现;二、实验内容及要求:1、产生n个随机整数用顺序查找的方法进行查找操作,并统计查找的次数

15、。2、给定n个有序整数用折半查找的方法进行查找操作,并统计查找的次数。 要求分别用初始化函数,顺序查找函数,折半查找函数及输出函数来完成。 实验十六:查找应用散列表的建立和查找一、实验目的:1)掌握散列查找的基本思想;2)掌握闭散列表的构造方法;3) 掌握线性探测处理冲突的方法;4) 掌握散列技术的查找性能。二、实验内容及要求:1) 对于给定的一组整数和散列函数,采用线性探测法处理冲突构造散列表;2) 设计查找算法,验证查找性能。 实验十七:排序操作一、实验目的:1)深刻理解各种排序算法的设计思想;2)掌握各种排序算法的执行过程;3)掌握各种排序算法的设计实现。二、实验内容及要求:产生n个随机整数分别采用直接插入排序、希尔排序、冒泡排序、直接选择排序和快速排序的方法进行排序。要求分别采用各排序函数和输出函数来完成。实验十八:排序应用双向起泡排序一、问题描述: 对一组数据进行双向起泡排序(按升序排列)。二、基本要求:1) 设计双向起泡排序算法;2) 将双向起泡排序算法的时间性能与起泡排序算法的时间性能进行比较。三、设计思想: 双向起泡排序的基本思想是:从两端(奇数趟排序从前向后,偶数趟排序从后向前)两两比较相邻记录,如果反序则交换,直到没有反序的记录为止。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!