线性表的链式表示和实现【荐】.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表的链式表示和实现【荐】.ppt

第2章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 一元多项式的表示和相加 2.3 线性表的链式表示和实现 2.3.1 链表的表示 3)头指针、头结点和首元结点的区别 (3)举例 例1: 例2: 2.3.2 链表的实现 (1) 单链表的存取 (2) 单链表的插入 (3) 单链表的删除 (4) 单链表的建立 (1) 单链表的存取 思路:要存取第i个数据元素,必须从头指针起一直找到该结点的指针p,然后才能执行 p-data=new_value 。 (2) 单链表的插入 (3) 单链表的删除 算法设计: 2.3.3 一个带头结点的线性链表类型定义如下: (用类C语言,见P37): 本节小结 静态单链表的类型定义如下: #define MAXSIZE 1000 //预分配链表的最大长度 typedef struct { ElemType data ; //数据域 int cur ; //指示域 }component ,SLinkList[MAXSIZE]; //这是一维结构型数组 前例1:一线性表 S = ( ZHAO, QIAN, SUN, LI, ZHOU, WU ),用静态链表如何表示? 说明1:假设S为SLinkList型变量,则S[MAXSIZE] 为一个静态链表; S[0].cur则表示第1个结点在数组中的位置。 说明2:如果数组的第i个分量表示链表的第k个结点, 则:S[i].data表示第k个结点的数据; S[i].cur 表示第k+1个结点(即k的直接后继)的位置。 data …… …… 2 SUN 4 ZHOU 0 WU 6 QIAN 5 LI 3 ZHAO 1 0 1 2 3 4 5 6 … 1000 cur i 头结点 说明3:静态链表的插入与删除操作与普通链表一样,不需要移动元素,只需修改指示器就可以了。 例如:在线性表 S = ( ZHAO, QIAN, SUN, LI, ZHOU, WU )的QIAN, SUN之间插入新元素LIU,可以这样实现: Step1:将QIAN的指示器原内容备份到临时变量temp: temp = S[3].cur; Step2:将QIAN的指示器换为新元素LIU的位置: S[3].cur = 7; Step3:将LIU的指示器变为后继SUN的位置: S[7].cur = temp ; data … … 2 SUN 4 ZHOU 0 WU 6 QIAN 5 LI 3 ZHAO 1 0 1 2 3 4 5 6 1000 cur i 头结点 LIU 6 7 7 * 2.3.1 链表的表示 2.3.2 链表的实现 2.3.3 一个带头结点的单链表类型 2.3.4 其它形式的链表 链式存储结构特点: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。 如何实现? 通过指针来实现! 让每个存储结点都包含两部分:数据域和指针域 指针 数据 指针 数据 指针 或 样式: 数据域:存储元素数值数据 指针域:存储直接后继或者直接前驱的存储位置 设计思想:牺牲空间效率换取时间效率 链表存放示意图如下: a1 head a2 /\ an …… 讨论1:每个存储结点都包含两部分:数据域和 讨论2:在单链表中,除了首元结点外,任一结点的 存储位置由 指示。 其直接前驱结点的链域的值 (2) 与链式存储有关的术语: 1)结点:数据元素的存储映像。由数据域和指针域两部分组成; 2)链表: n 个结点由指针链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构。只包含一个指针域的称为单链表或线性链表 指针域 头指针 头结点 首元结点 a1 head a2 … info an ^ 首元结点是指链表中存储线性表第一个数据元素a1的结点。 头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志和表长等信息,它不计入表长度。 头指针是指向链表中第一个结点(或为头结点、或为首元结点)的指针; 示意图如下: 讨论2: 在链表中设置头结点有什么好处? 讨论1: 如何表示空表? 因为任何元素结点都有前驱结点,而在做插入和删除操作时,都需修改其前驱结点的指针域,因此对首元结点可以统一处理。即简化插入和删除操作; 表头指针是指向头结点的非空指针,因此空表和非空表的处理一样。 无头结点时,当头指针的值为空时表示空表; ^ 头指针 无头结点 ^ 头指针 头结

文档评论(0)

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

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

1亿VIP精品文档

相关文档