网站大量收购独家精品文档,联系QQ:2885784924

3.3 线性链表.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在线性链表中删除一个元素后,不需要移动表的数据元素,只需改 变被删除元素所在结点的前一个结点的指针域即可。另外,由于可利用 栈是用于收集计算机中所有的空闲结点,因此,当从线性链表中删除一 个元素后,该元素的存储结点就变为空闲,应将该空闲结点送回到可利 用栈。 算法2.18 在头指针为head的线性链表中删除包含元素x的结点。 三、循环链表 线性链表存在的缺点 在线性链表中,插入与删除的运算虽然比较方便,但还存在一个问题:在运算过程中对于空表与对第一个结点的处理必须单独考虑,因此空表与非空表的运算不统一。 为了克服线性链表的这个缺点,可以采用另一种链接方式,即循环链表(circular linked list)的结构。 循环链表的结构特点 在循环链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。 循环链表中最后一个结点的指针域不是空,而是指向表头结点。即在循环链表中,所有结点的指针构成了一个环状链。 线性链表存在的结构示意图 循环链表的优点 在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点;而线性单链表则做不到这一点。 由于在循环链表中设置了一个表头结点,因此,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算完全 统一。 1. 在循环链表中查找指定元素 算法2.19 在头指针为head的循环链表中寻找包含元素x的前一个结点p。 分析:在循环链表中, 最后一个结点的指针域内容不是0, 而是与头指针相同。 2. 循环链表的插入 算法2.20 在头指针为head的循环链表中包含元素x的结点前插入新元素b。 3.3 线性链表及其运算 一、线性链表的基本概念 由于线性表的顺序存储结构存在一些固有缺点,因此,对于大的线性表,特别是元素变动频繁的大线性表不宜采用顺序存储结构,而是采用链式存储结构。 存储结点:简称结点(Node),是指数据结构中的每一个数据结点所对应的存储单元。 在链式存储方式中,要求每个结点由两部分组成:数据域用于存放数据元素值;指针域用于存放指针。 其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 在链式存储结构中,存储数据结构的存储空间可以不连续,各数 据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素 之间的逻辑关系是由指针域来确定的。链式存储方式既可用于表示线性 结构,也可用于表示非线性结构。 1. 线性链表 线性链表(Linear Linked list):是指线性表的链式存储结 构。 存储结点:是指为了适应线性表的链式存储结构,计算 机存储空间划分的一个个占若干字节的小块。 存储结点的结构: 存储结点分为两部分:一部分用于存储 数据元素的值,称为数据域;另一部分用于 存放下一个数据元素的存储序号(即存储结点 的地址),即指向后件结点,称为指针域。 在程序设计语言中,线性链表的存储空间可以用两个同样大小的一 维数组(但它们的数据类型不同)表示,分别为V(1:m)和NEXT(1:m)。其 中V(i)表示第i个存储结点的数据域,NEXT(i)表示第i个存储结点的指针域 ,线性链表中存储结点的结构如下图所示。 在线性链表中,用一个专门的指针HEAD指向线性链表中第一个数 据元素的结点(即存放线性表中第一个数据元素的存储结点的序号)。线 性表中最后一个元素没有后件,因此,线性链表中最后一个结点的指针 域为空(用NULL或0表示),表示链表终止。线性链表的逻辑结构如下图所 示。 设线性表为(al, a2, a3,a4,a5),存储空间具有10个存储结点,该线性 表在存储空间中的存储情况如下图(a)所示。为了直观地表示该线性链表 中各元素之间的前后件关系,还可以用如下图(b)所示的逻辑状态来表示 ,其中每一个结点上面的数字表示该结点的存储序号(简称结点号)。 在线性表的链式存储结构中,各数据结点的存储序号是 不连续的,并且各结点在存储空间中的位置关系与逻辑关系 也不一致。各数据元素之间的前后件关系是由各结点的指针 域来指示的。指向线性表中第一个结点的指针HEAD称为头

文档评论(0)

骨干 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档