《数据结构与算法设计》实验大纲及实验内容详细要求
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法设计》实验大纲及实验内
容详细要求
一、课程编号:040039
二、课程类型:必修
适用专业:通信工程
实验学时:32学时
三、本课程的地位、作用与任务
数据结构课程的目标是使学生掌握数据的基本的逻辑结构和存储结构、一些典型的数据结构算法及程序设计方法,要求学会分析数据对象特征,掌握数据组织方法和计算机的表示方法,为数据选择适当的逻辑结构、存储结构以及相应的处理算法,要求具备算法分析的基本技术和能力,并培养良好的程序设计风格,掌握开发复杂、高效程序的技能。
在实验前要预习或者自行补充部分学时,同时进行部分代码准备,实验后要认真完成实验报告。
四、课程基本要求
1.学生应根据每个实验的任务和教师所提的要求,带C语言教材和课程教材。
2.完成指定的实验任务,保存源代码并输出、记录实验结果。
3.实验结束后按时提交实验报告,对于未完成部分,应该利用课余时间补充完成。
五、实验安排
本实验课程共32学时,五个实验(单元),分16次实验,每次2学时。
实验一:C程序编程、调试实验
1、实验学时:4学时(学生堂下自行加4学时)
2、实验目的:
1)巩固复习前期所学C语言的基本数据类型和自定义数据类型等知识点,强化
学习数据结构语言和编程基础。
2)巩固复习前期所学C语言的函数参数传递、指针和结构体等知识点,加强学
习数据结构语言基础。
3)能够较熟练调试程序
3、实验内容:
1)学生信息的显示。具体要求如下:
●定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);
●设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构
体类型;
●设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数
进行显示(学生人数不少于5人)。
2)输入若干个整数存储到数组元素值,然后按输入顺序进行逆置存储,最后打
印出逆置后的元素值。要求用指针和动态内存分配方法实现。例如输入:1023045,逆置后显示为:5430210。
3)编写扑克牌发牌程序。在VC++的调试环境下观察数据存储位置、存储数据的
变化、数据之间的逻辑次序、物理存储位置次序。
4)对上述C程序进行调试,运行,从中理解数据和算法的概念,总结调试方法。
实验二:线性表的存储及基本操作、综合应用
1、实验学时:6学时
2、实验目的:
1)掌握线性表的逻辑特征
2)熟练掌握线性表的链式存储结构定义及基本操作
3)理解循环链表和双链表的特点和基本运算
4)加深对顺序存储数据结构的理解和链式存储数据结构的理解,逐步培养解决实
际问题的编程能力。
5)掌握顺序表和链表的概念,学会对问题进行分析,选择恰当的逻辑结构和物理
结构
6)和实验一一起撰写一份实验报告,总结学习效果
3、实验内容:
使用顺序表和链表两种存储结构(linked list),存储输入的一组数据整数,能够进
行插入、删除等操作。线性表的具体操作采用函数形式实现,编写主程序实现对各不同函数的调用。其中对单链表具体要求:
●初始化一个带表头结点的空链表;
●创建一个单链表是从无到有地建立起一个链表,即一个一个地输入各结
点数据,并建立起前后相互链接的关系。又分为逆位序(插在表头)输入n个元素的值和正位序(插在表尾)输入n个元素的值;
●插入结点可以根据给定位置进行插入(位置插入),也可以根据结点的
值插入到已知的链表中(值插入),且保持结点的数据按原来的递增次序排列,形成有序链表。
●删除结点可以根据给定位置进行删除(位置删除),也可以把链表中查
找结点的值为搜索对象的结点全部删除(值删除);
●输出单链表的内容是将链表中各结点的数据依次显示,直到链表尾结
点;
实验三:二叉树的定义及基本操作
1、实验学时:8学时
2、实验目的:
1)熟练掌握二叉树的二叉链表存储结构
2)掌握二叉树的非线性和递归性特点
3)熟练掌握二叉树的递归遍历操作的实现方法
4)加深对二叉树和性质的理解,逐步培养解决实际问题的编程能力
3、实验内容:
1)利用二叉树的链式存储结构,设计一组输入数据(假定为一组整数或一组字
符),能够对二叉树进行如下操作:
●创建一棵空二叉树;
●对一棵存在的二叉树进行销毁;
●根据输入某种遍历次序输入二叉树中结点的值,依序建立二叉树;
●判断某棵二叉树是否为空;
●求二叉树的根结点,若为空二叉树,则返回一特殊值;
●二叉树的遍历,即按某种方式访问二叉树中的所有结点,并使每个结点恰
好被访问一次;
●求二叉树的深度;
●编写主程序,实现对各不同的算法调用;
实验四:图存储及基本操作、典型应用
1、实验学时:6学时
2、实验目的:
1)熟练掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法
2)掌握图的基本运算及应用
3)加深对图的理解,逐步培养解决实际问题的编程能力
4)掌握图的邻接矩阵、邻接表的表示方法
5)加深对图的理解,逐步培养解决实际问题的编程能力
6)和实验三一起撰写一份实验报告,总结学习效果
3、实验内容:
1)实现图的邻接矩阵、邻接表存储结构,然后基于一种存储结构实现如下操作:
●创建一个可以随机确定结点数和弧(有向或无向)数的图;
●根据图结点的序号,得到该结点的值;
●根据图结点的位置的第一个邻接顶点的序号,以及下一个邻接顶点的序
号;
●实现从第v个顶点出发对图进行深度优先递归遍历;
●实现对图作深度优先遍历;
●编写主程序,实现对各不同的算法调用。
实验五:查找与排序算法综合应用
1、实验学时:8学时
2、实验目的
1)巩固和加深对各种数据结构的理解;
2)掌握恰当选用数据结构,并设计适合算法的能力;
3)撰写相应实验报告,总结学习效果。
3、实验内容