1、数据结构实验讲义实验一 实验题目:运动会成绩统计实验目的:(1)掌握结构体类型数组的概念和使用;(2)掌握枚举类型的概念与使用;(3)设计并掌握算法,学会分析算法并培养用算法解决实际问题的能力。实验要求:(1)设计相应原始表格(比赛的成绩),选择恰当的数据结构;(2)统计各院校的男、女总分和团体总分,并输出。实验内容和实验步骤:(由学生填写)假设有A、B、C、D、E五个高校进行田径比赛,各院校的单项成绩均已存入计算机,并构成一张表,表的每一行的形式为:项目名称 性别 校名 成绩 得分编程统计各院校的男、女总分和团体总分,并输出。#define NULL 0typedef struct char
2、 *sport; enummale,female gender; char schoolname; char *result; int score; resulttype;typedef struct int malescore; int femalescore; int totalscore; scoretype;实验用测试数据和相关性分析:(由学生填写)实验总结:(由学生填写) 实验总结:(由学生填写)实验四实验题目:一元稀疏多项式运算实验目的:设计并掌握算法,学会分析算法并培养用算法解决实际问题的能力。实验要求(1)用带头结点的单链表做存储结构;(2)构造两个多项式,实现相加和相乘。实验
3、内容和实验步骤:(由学生填写)用C语言编程实现一元稀疏多项式加、减、乘运算。实验用测试数据和相关性分析:(由学生填写)实验总结:(由学生填写) 实验五 实验题目:栈的应用实验目的:1、使学生深入了解堆栈的特性,以便在遇到实际问题时灵活运用堆栈知识。2、巩固堆栈数据结构的构造方法。实验要求:1、掌握堆栈的逻辑结构和存储结构。2、熟练掌握堆栈的出栈、入栈等操作。实验内容和实验步骤:(由学生填写)用C语言编程实现数制转换和算术表达式的求值。1、算法分析将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(250
4、4)8NN div 8N mod 81348 168 416821021 2 520 2从中我们可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。所以可以用顺序栈来模拟这个过程。2、算法如下struct nodeint data; struct node *link;typedef struct node NODE;NODE *top=NULL;void conversion(int x)while(x0)push(top,x%8); x=x/8;while(!stackempty(top) /* stackempty( )为判断堆栈是否为空函数*/x=pop(
5、s);printf(“%d”,x);实验用测试数据和相关性结果分析:(由学生填写) 实验总结:(由学生填写)实验六 实验题目:队列的应用实验目的:(1)、使学生深入了解队列特性,以便遇到实际问题时灵活运用队列知识。(2)、巩固队列结构的构造方法。(3)设计并掌握算法,理解队列的广泛应用,从而培养用算法解决实际问题的能力。实验要求:(1)、掌握队列的逻辑结构和存储结构。(2)、熟练掌握队列的出队、入队等操作。实验内容和实验步骤:用C语言编程实现迷宫问题求解。算法分析:迷宫的定义如下:#define m 6 /* 迷宫的实际行 */#define n 8 /* 迷宫的实际列 */int maze
6、m+2n+2 ;mazeij=0或1; 其中:0表示通路,1表示不通,当从某点向下试探时,中间点有8个方向可以试探,(见图3.4)而四个角点有3个方向,其它边缘点有5个方向,为使问题简单化我们用mazem+2n+2来表示迷宫,而迷宫的四周的值全部为1。Move数组定义如下:typedef struct int x,y item ; item move8 ;本算法要求找一条迷宫的最短路径,算法的基本思想为:从迷宫入口点(1,1)出发,向四周搜索,记下所有一步能到达的坐标点;然后依次再从这些点出发,再记下所有一步能到达的坐标点,依此类推,直到到达迷宫的出口点(m,n)为止,然后从出口点沿搜索路径回
7、溯直至入口。这样就找到了一条迷宫的最短路径,否则迷宫无路径。如何存储搜索路径。在搜索过程中必须记下每一个可到达的坐标点,以便从这些点出发继续向四周搜索。由于先到达的点先向下搜索,故引进一个“先进先出”数据结构-队列来保存已到达的坐标点。到达迷宫的出口点(m,n)后,为了能够从出口点沿搜索路径回溯直至入口,对于每一点,记下坐标点的同时,还要记下到达该点的前驱点,因此,用一个结构数组sqnum作为队列的存储空间,因为迷宫中每个点至多被访问一次,所以num至多等于m*n。sq的每一个结构有三个域:x,y和pre,其中x,y分别为所到达的点的坐标,pre为前驱点在sq中的坐标,是一个静态链域。除sq外
8、,还有队头、队尾指针:front和rear用来指向队头和队尾元素。队的定义如下:typedef struct int x,y; int pre; sqtype;sqtype sqnum;int front,rear;初始状态,队列中只有一个元素sq记录的是入口点的坐标(,),因为该点是出发点,因此没有前驱点,pre域为,队头指针front和队尾指针rear均指向它,此后搜索时都是以front所指点为搜索的出发点,当搜索到一个可到达点时,即将该点的坐标及front所指点的位置入队,不但记下了到达点的坐标,还记下了它的前驱点。front所指点的个方向搜索完毕后,则出队,继续对下一点搜索。搜索过程中
9、遇到出口点则成功,搜索结束,打印出迷宫最短路径,算法结束;或者当前队空即没有搜索点了,表明没有路径算法也结束。实验用测试数据和相关性分析:(由学生填写)实验总结:(由学生填写)实验七 实验题目:串的基本运算实验目的:(1)掌握串在顺序存储结构下的基本运算;(2)掌握串模式匹配的BF算法和KMP算法;(3)设计并掌握算法,理解串的具体应用,从而培养用算法解决实际问题的能力。实验要求:(1)、掌握串的逻辑结构及顺序存储结构;(2)、熟练掌握串的一些基本运算。实验内容和实验步骤:(由学生填写)(1)求两个串的最长公共子串;(2)串模式匹配的BF算法和KMP算法实现。(3)、实现两个串的最长公共子串。实验用测试数据和相关性分析:(由学生填写)实验总结:(由学生填写) 实验内容和实验步骤:(由学生填写) 实验用测试数据和相关性结果分析:(由学生填写) 实验总结:(由学生填写)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1