实验二(单链表的定义和基本操作).pdfVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二:线性表的链式存储结构定义及基本操作 一、实验目的: . 熟练掌握线性表的链式存储结构定义及基本操作 . 理解循环链表和双链表的特点和基本运算 . 加深对链式存储数据结构的理解,逐步培养解决实际问题的编程能力 二、实验内容: (一)基本实验内容: 建立单链表,完成链表(带表头结点)的基本操作:建立链表、插入、删除、查找、输 出、求前驱、求后继、两个有序链表的合并操作。 其他基本操作还有销毁链表、将链表置为空表、求链表的长度、获取某位置结点的内容、 搜索结点。 1.问题描述: 利用线性表的链式存储结构,设计一组输入数据(假定为一组整数),能够对单链表进行 如下操作: . 初始化一个带表头结点的空链表; . 创建一个单链表是从无到有地建立起一个链表,即一个一个地输入各结点数据,并建立 起前后相互链接的关系。又分为逆位序(插在表头)输入n 个元素的值和正位序(插在表尾)输 入n 个元素的值; . 插入结点可以根据给定位置进行插入(位置插入),也可以根据结点的值插入到已知的链 表中(值插入),且保持结点的数据按原来的递增次序排列,形成有序链表。 . 删除结点可以根据给定位置进行删除(位置删除),也可以把链表中查找结点的值为搜索 对象的结点全部删除(值删除); . 输出单链表的内容是将链表中各结点的数据依次显示,直到链表尾结点; . 编写主程序,实现对各不同的算法调用。 其它的操作算法描述略。 2 .实现要求: 对链表的各项操作一定要编写成为C (C++ )语言函数,组合成模块化的形式,还要针 对每个算法的实现从时间复杂度和空间复杂度上进行评价。 . “初始化算法”的操作结果:构造一个空的线性表L,产生头结点,并使L 指向此头结点; . “建立链表算法” 初始条件:空链存在; 操作结果:选择逆位序或正位序的方法,建立一个单链表,并且返回完 成的结果; . “链表(位置)插入算法”初始条件:已知单链表L 存在; 操作结果:在带头结点的单链线性表L 中第i 个位置之前插入元素e ; . “链表(位置)删除算法”初始条件:已知单链表L 存在; 操作结果:在带头结点的单链线性表L 中,删除第i 个元素,并由e 返 回其值; . “输出算法”初始条件:链表L 已存在; 操作结果:依次输出链表的各个结点的值; (二)扩展实验内容 1.问题描述: . 求前驱结点:根据给定结点的值,在单链表中搜索其当前结点的后继结点值为给定的值, 将当前结点返回; . 求后继结点:根据给定结点的值,在单链表中搜索其当前结点的值为给定的值,将后继结 点返回; . 两个有序链表的合并:分别将两个单链表的结点依次插入到第3 个单链表中,继续保持结 点有序; 2 .实现要求: . “求前驱算法”初始条件: 线性表L 已存在; 操作结果: 若cur_e 是L 的数据元素,且不是第一个,则用pre_e 返回它的前驱; . “求后继算法”初始条件: 线性表L 已存在; 操作结果: 若cur_e 是L 的数据元素,且不是最后一个,则用next_e 返回它的 后继; . “两个有序链表的合并算法”初始条件: 线性表单链线性表La 和Lb 的元素按值非递减排 列; 操作结果:归并La 和Lb 得到新的单链表。 三、实验指导 一个简单程序通常主要由三部分构成: 1、常量定义(#define),类型重定义(typedef)及函数原型(#include)声明;还有针对 每一种数据结构的类型定义,由于本实验是要求实现对线性表的顺序存储和链式存储两种存 储结构的定义,因此不同的物理存储结构的定义和其基本操作最好是以独立的文件存在,因 此本实验将顺序表和链表可分解为两个不同的实验部分。 2、算法函数,对于顺序表,每一个函数具有独立的功能,组合成为模块的形式,如 ListInit_Sq、ListInsert_Sq、ListDelete_Sq、 ListReverse_Sq、ListPrint_Sq 等; 对于链表,每一个函数具有独立的功能,组合成为模块的形式,如 ListInit_Link、 ListInsert_Link 、ListDelete_Link 、 ListTraverse_Link 、PriorElem_Link 、

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档