数据结构实验讲义.docx

上传人:b****9 文档编号:25165662 上传时间:2023-06-05 格式:DOCX 页数:17 大小:438.75KB
下载 相关 举报
数据结构实验讲义.docx_第1页
第1页 / 共17页
数据结构实验讲义.docx_第2页
第2页 / 共17页
数据结构实验讲义.docx_第3页
第3页 / 共17页
数据结构实验讲义.docx_第4页
第4页 / 共17页
数据结构实验讲义.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数据结构实验讲义.docx

《数据结构实验讲义.docx》由会员分享,可在线阅读,更多相关《数据结构实验讲义.docx(17页珍藏版)》请在冰豆网上搜索。

数据结构实验讲义.docx

数据结构实验讲义

实验一

实验题目:

运动会成绩统计

实验目的:

(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)、实现两个串的最长公共子串。

实验用测试数据和相关性分析:

(由学生填写)

实验总结:

(由学生填写)

实验内容和实验步骤:

(由学生填写)

实验用测试数据和相关性结果分析:

(由学生填写)

实验总结:

(由学生填写)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1