数据结构实验讲义.docx
- 文档编号:25165662
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:17
- 大小:438.75KB
数据结构实验讲义.docx
《数据结构实验讲义.docx》由会员分享,可在线阅读,更多相关《数据结构实验讲义.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构实验讲义
实验一
实验题目:
运动会成绩统计
实验目的:
(1)掌握结构体类型数组的概念和使用;
(2)掌握枚举类型的概念与使用;
(3)设计并掌握算法,学会分析算法并培养用算法解决实际问题的能力。
实验要求:
(1)设计相应原始表格(比赛的成绩),选择恰当的数据结构;
(2)统计各院校的男、女总分和团体总分,并输出。
实验内容和实验步骤:
(由学生填写)
假设有A、B、C、D、E五个高校进行田径比赛,各院校的单项成绩均已存入计算机,并构成一张表,表的每一行的形式为:
项目名称性别校名成绩得分
编程统计各院校的男、女总分和团体总分,并输出。
#defineNULL0
typedefstruct{
char*sport;
enum{male,female}gender;
charschoolname;
char*result;
intscore;
}resulttype;
typedefstruct{
intmalescore;
intfemalescore;
inttotalscore;
}scoretype;
实验用测试数据和相关性分析:
(由学生填写)
实验总结:
(由学生填写)
实验总结:
(由学生填写)
实验四
实验题目:
一元稀疏多项式运算
实验目的:
设计并掌握算法,学会分析算法并培养用算法解决实际问题的能力。
实验要求
(1)用带头结点的单链表做存储结构;
(2)构造两个多项式,实现相加和相乘。
实验内容和实验步骤:
(由学生填写)
用C语言编程实现一元稀疏多项式加、减、乘运算。
实验用测试数据和相关性分析:
(由学生填写)
实验总结:
(由学生填写)
实验五
实验题目:
栈的应用
实验目的:
1、使学生深入了解堆栈的特性,以便在遇到实际问题时灵活运用堆栈知识。
2、巩固堆栈数据结构的构造方法。
实验要求:
1、掌握堆栈的逻辑结构和存储结构。
2、熟练掌握堆栈的出栈、入栈等操作。
实验内容和实验步骤:
(由学生填写)
用C语言编程实现数制转换和算术表达式的求值。
1、算法分析
将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:
即除d取余法。
例如:
(1348)10=(2504)8
N Ndiv8 Nmod8
1348 168 4
168 21 0
21 2 5
2 0 2
从中我们可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。
所以可以用顺序栈来模拟这个过程。
2、算法如下
structnode
{intdata;
structnode*link;
}
typedefstructnodeNODE;
NODE*top=NULL;
voidconversion(intx)
{
while(x>0)
{push(top,x%8);
x=x/8;
}
while(!
stackempty(top))/*stackempty()为判断堆栈是否为空函数*/
{x=pop(s);
printf(“%d”,x);
}
实验用测试数据和相关性结果分析:
(由学生填写)
实验总结:
(由学生填写)
实验六
实验题目:
队列的应用
实验目的:
(1)、使学生深入了解队列特性,以便遇到实际问题时灵活运用队列知识。
(2)、巩固队列结构的构造方法。
(3)设计并掌握算法,理解队列的广泛应用,从而培养用算法解决实际问题的能力。
实验要求:
(1)、掌握队列的逻辑结构和存储结构。
(2)、熟练掌握队列的出队、入队等操作。
实验内容和实验步骤:
用C语言编程实现迷宫问题求解。
算法分析:
迷宫的定义如下:
#definem6/*迷宫的实际行*/
#definen8/*迷宫的实际列*/
intmaze[m+2][n+2];
maze[i][j]=0或1;其中:
0表示通路,1表示不通,当从某点向下试探时,中间点有8个方向可以试探,(见图3.4)而四个角点有3个方向,其它边缘点有5个方向,为使问题简单化我们用maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为1。
Move数组定义如下:
typedefstruct
{intx,y
}item;
itemmove[8];
本算法要求找一条迷宫的最短路径,算法的基本思想为:
从迷宫入口点(1,1)出发,向四周搜索,记下所有一步能到达的坐标点;然后依次再从这些点出发,再记下所有一步能到达的坐标点,…,依此类推,直到到达迷宫的出口点(m,n)为止,然后从出口点沿搜索路径回溯直至入口。
这样就找到了一条迷宫的最短路径,否则迷宫无路径。
如何存储搜索路径。
在搜索过程中必须记下每一个可到达的坐标点,以便从这些点出发继续向四周搜索。
由于先到达的点先向下搜索,故引进一个“先进先出”数据结构------队列来保存已到达的坐标点。
到达迷宫的出口点(m,n)后,为了能够从出口点沿搜索路径回溯直至入口,对于每一点,记下坐标点的同时,还要记下到达该点的前驱点,因此,用一个结构数组sq[num]作为队列的存储空间,因为迷宫中每个点至多被访问一次,所以num至多等于m*n。
sq的每一个结构有三个域:
x,y和pre,其中x,y分别为所到达的点的坐标,pre为前驱点在sq中的坐标,是一个静态链域。
除sq外,还有队头、队尾指针:
front和rear用来指向队头和队尾元素。
队的定义如下:
typedefstruct
{intx,y;
intpre;
}sqtype;
sqtypesq[num];
intfront,rear;
初始状态,队列中只有一个元素sq[1]记录的是入口点的坐标(1,1),因为该点是出发点,因此没有前驱点,pre域为-1,队头指针front和队尾指针rear均指向它,此后搜索时都是以front所指点为搜索的出发点,当搜索到一个可到达点时,即将该点的坐标及front所指点的位置入队,不但记下了到达点的坐标,还记下了它的前驱点。
front所指点的8个方向搜索完毕后,则出队,继续对下一点搜索。
搜索过程中遇到出口点则成功,搜索结束,打印出迷宫最短路径,算法结束;或者当前队空即没有搜索点了,表明没有路径算法也结束。
实验用测试数据和相关性分析:
(由学生填写)
实验总结:
(由学生填写)
实验七
实验题目:
串的基本运算
实验目的:
(1)掌握串在顺序存储结构下的基本运算;
(2)掌握串模式匹配的BF算法和KMP算法;
(3)设计并掌握算法,理解串的具体应用,从而培养用算法解决实际问题的能力。
实验要求:
(1)、掌握串的逻辑结构及顺序存储结构;
(2)、熟练掌握串的一些基本运算。
实验内容和实验步骤:
(由学生填写)
(1)求两个串的最长公共子串;
(2)串模式匹配的BF算法和KMP算法实现。
(3)、实现两个串的最长公共子串。
实验用测试数据和相关性分析:
(由学生填写)
实验总结:
(由学生填写)
实验内容和实验步骤:
(由学生填写)
实验用测试数据和相关性结果分析:
(由学生填写)
实验总结:
(由学生填写)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 讲义