数据结构实验报告

数据结构实验报告

ID:23218218

大小:116.79 KB

页数:9页

时间:2018-11-05

数据结构实验报告_第1页
数据结构实验报告_第2页
数据结构实验报告_第3页
数据结构实验报告_第4页
数据结构实验报告_第5页
资源描述:

《数据结构实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY数据结构实验报告实验项目实验一实验类别基础篇学生姓名宋大超学生学号201501149完成日期2016-10-9指导教师袁科实验成绩评阅日期评阅教师实验一线性表基本操作的编程实现【实验目的】线性表基本操作的编程实现要求:线性表基本操作的编程实现(2学时,验证型),掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。【

2、实验性质】验证性实验(学时数:2H)【实验内容】把线性表的顺序存储和链表存储的数据插入、删除运算其中某项进行程序实现。建议实现键盘输入数据以实现程序的通用性。为了体现功能的正常性,至少要编制遍历数据的函数。【注意事项】1.开发语言:使用C。2.可以自己增加其他功能。【实验分析,说明过程】本次实验主要是检验单链表数据的插入与删除。实验的第一部分是要求将学生e的信息插入到第i个学生的前面,也就是在两个节点之间建立新的节点。我们此次实验有两个要求。第一个是将一个新的学生信息插入到原来的学生信息当中去。第二个要求是要删除一个学生的信息。以下我将通过示意图和文字的方式说明这次实验的完成方法。需

3、要说明的是此处的i表示学生信息的一个序号元素。在第i个学生信息插入时,就得把第i个学生之后的所有节点依次向后移动一个位置。在将新的节点X插入到第i的位置。1Stu[1]2Stu[2]3Stu[3]4Stu[4]nStu[n]1Stu[1]2Stu[2]3Stu[3]4Stu[4]5enStu[n]如上图所示,例如将学生e的信息插入到第五个位置。我们先将指针指向最后一个位置,由于要插入一个新的节点,原来数组的长度发生了变化。数据的存储空间位置也随之发生了变化,为此,我们将最后一个节点向后移动,利用for循环将第五个节点之后的依次向后移动,直到所有的元素都向后移动了一位。对于顺序链表的删

4、除工作实际上与其插入工作相反,只需要将表中第i+1个到第n个节点的所有元素依次向后移动一个位置。1Stu[1]2Stu[2]3Stu[3]4Stu[4]5Stu[5]1Stu[1]2Stu[2]3Stu[4]4Stu[5]如上图所举例的那样,当我们删除第三个元素是,第三个元素后面的元素依次向前移动了一位。我们可以直接找到第i个元素后面的位置将其向前移动一个。【思考题】一:线性表的顺序存储和链表存储的差异?优缺点分析?答:1、差异:线性表的顺序存储的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需预先分配,它是静态分配内存。顺序表的存储空间是静态分配的,在程序执

5、行之前必须明确规定它的存储规模,也就是说事先对“MaxSize”要有合适的设定,设定过大会造成存储空间的费,过小造成溢出。因此,当对线性表的长度或存储规模难以估计时,不宜采用顺序表。线性表的链表存储是在逻辑上相邻的数据元素,物理存储位置不一定相邻,它使用指针实现元素之间的逻辑关系。并且,链表的存储空间是动态分配的。链表的动态分配则可以克服需要预先设定空间大小的缺点。链表不需要预留存储空间,也不需要知道表长如何变化,只要内存空间尚有空闲,就可以再程序运行时随时地动态分配空间,不需要时还可以动态回收。因此,当线性表的长度变化较大或者难以估计其存储规模时,宜采用动态链表作为存储结构。2、优

6、缺点:线性表的顺序存储优点:方法简单,如数组,容易实现。不用为表示节点间的逻辑关系而增加额外的存储开销。顺序表具有按元素序号随机访问的特点。线性表的顺序存储缺点:在顺序表中做插入、删除操作时,移动表中的大量元素,因此对n较大的顺序表效率低。需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。线性表的链式存储优点:插入、删除运算方便,只需调整指针的指向即可。能够动态分配内存,不需要预选分配好空间,能更加有效率的利用空间资源。线性表的顺序存储缺点:每次访问链表时只能从头节点开始,不能做到随机访问。要占用额外的存储空间存储元素之间的关系,存储密

7、度降低。二、哪些操作引发了数据的移动?答:数据的插入、删除、排序、归并等。三、算法的时间效率是如何体现的?答:通过时间频度和时间复杂度来体现的。四、链表的指针是如何后移的?如何加强程序的健壮性?答:(1)假如指针p指向某个结点,那么p=p->next;就可以使指针后移,就是把p所指向结点的指针域的值重新给指针p。(2)增加程序的容错控制;算法尽量避免一些隐患错误;降低时间复杂度;尽量少执行一些复杂的操作;提高算法的效率等。【实验小结】一、重难点对于我来说由

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。