- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构C版实验指导
《数据结构与算法》实验指导书
一、实验课程教学目的和要求
《数据结构与算法》是一门实践性很强的课程,光靠读书和做习题是不能提高实践能力的。
《数据结构与算法》的实验与程序设计语言课程中的实验不同,后者更多的强调语言方面的功能实现,而前者更接近实际,需要同学们自己分析问题,设计模型和算法,再上机调试完成。
《数据结构与算法》的实验的目的主要有两个:
1)深化理解书本上的理论知识,将书本的知识变“活”(为已掌握,为已活用);
2)理论和实践相结合,学会将相关的数据结构和算法应用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力。
《数据结构与算法》的实验类型
1)验证性实验—主要是验证教材中已有的数据结构和算法。
2)设计性实验—针对具体问题,应用某一个知识点,自己设计数据结构和算法,培养对数据结构的简单运用能力。
3)综合性实验—针对具体问题,应用某几个知识点,自己设计数据结构和算法,培养对数据结构的综合运用能力。
《数据结构与算法》的实验安排
项目 实验题目 学时 说明 一 顺序表的操作 2 设计 二 单链表的操作 2 设计 三 栈与队的应用 2 设计 四 对称矩阵的压缩存储 2 设计 五 二叉树的操作 4 设计 六 图的操作* 2 设计 七 查找 2 设计 八 排序 2 设计
《数据结构与算法》实验的一般步骤
1)需求分析:要对简单的问题描述进行详细的分析,充分理解问题,明确问题要求做什么,有什么数据,边界条件……。
2)概要设计:针对问题描述中涉及到数据定义抽象数据类型,设计数据结构和算法模型。本部分不必考虑实现的细节。
3)详细设计:设计具体的存储结构(用C++或C语言)。此外,还要设计对象或函数间的调用关系及输入输出。
4)上机调试(运行代码,修正语法及逻辑错误)
5)结果与总结
《数据结构与算法》的实验要求:
1)完成实验预习;
2)完成并上交实验报告;
3)完成电子设计文档
预习/实验报告的格式要求:
1)实验名称
2)实验目的
3)实验内容及要求
4)概要设计:ADT
5)详细设计:C++类或C函数
6)调试分析:
7)结果与总结
实验一: 顺序表的操作
一、实验目的:
1)掌握线性表的顺序存储结构与算法实现;
3)掌握顺序表的逻辑插入方法。
二、实验内容及要求:
实现对有序的顺序表L进行保序插入的(C++或C)算法
提示:主函数构建n个整数的顺序表L并调用输出函数;
调用保序插入函数实现插入操作并调用输出函数输出。
实验二: 单链表的操作
一、实验目的:
1)掌握线性表的链接存储结构与算法实现;
2)掌握线性表的逻辑插入/删除操作方法。
二、实验内容及要求:
设计算法将一个带头结点的单循环链表A(值为整数)分解为两个具有相同结构的链表B和C,其中B表中结点为A表中值为奇数的结点,而C表中结点为A表中值为偶数的结点(要求利用原表结点)。
提示:B表头结点利用A表头结点;为C表产生一个头结点。从A的首元结点检查每个结点应插入B表还是C表,从而从A表取下,做相应的插入操作。
结点结构: struct Node
{ int data;
Node *next;
};
实验三:括号匹配问题
一、实验目的:
1)掌握栈和队列的存储结构;
2)掌握栈和队列的操作特性;
3)掌握栈和队列基本操作的实现。
二、实验内容及要求:
括号匹配问题
在算述表达式中,可能出现嵌套的大、中、小括号,设计一个算法,可以判断给定的表达式串中的括号是否是匹配的。
要求:首先,分别先定义一个栈和一个队;其次,将表达式串中的各种括号字符依次入队(其它字符不予考虑);最后利用栈来判断队中的括号是否是匹配的。
无论是什么括号,最后出现的左括号,必须与其后最先出现的右括号匹配,这符合栈的后进先出的特点,故我们可以用栈和进行匹配性判断。
根据要求,串(括号) ( 队 ( 栈
操作接口:bool match(char *s)
主要操作:
队,栈初始化
括号字符入队
出队为左括号:进栈
出队为右括号:弹栈
匹配?
实验四:对称矩阵的压缩存储
一、实验目的:
1)掌握对称矩阵的压缩存储方法;
2)掌握对称矩阵的压缩存储的寻址方法。
二、实验内容:
1) 建立一个n×n的对称矩阵;
2) 将对称矩阵用一维数组存储
三、实现提示:
首先建立一个n×n的对称矩阵A并初始化矩阵的元素。对称矩阵只须存储下三角部分,即将一个n×n的对称矩阵用一个大小为n×(n+1)/2的一维数组SA来存储,则对称矩阵中的元素aij(i≥j)在SA中的下标k与i、j的关系为k=i×
文档评论(0)