JAVA数据结构第二节 线性表B.pptVIP

  1. 1、本文档共36页,可阅读全部内容。
  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文档。上传文档
查看更多
用链表可表示为: 3 5 11 /\ 8 La 2 6 11 /\ 8 Lb 9 2 3 6 5 Lc 8 头结点 La Lb Lc 算法分析: 算法主要包括:搜索、比较、插入三个操作: 搜索:需要两个指针遍历两个链表; 比较:比较结点数据域中数据的大小; 插入:将两个结点中数据小的结点插入新链表。 3 5 8 11 ^ Lb 2 6 8 11 ^ 9 Pa Pb Pa Pb Pa、Pb用于搜索La和Lb, Pc指向新链表当前结点 Lc … Pa 3 Pc Pa 5 Pc 11 ^ Pc 2 Pb Pc Pa La 思考: 1、不用Lc,直接把La表插到Lb表中;或者把Lb表 插到La表中,如何编程? 2、要求不能有重复的数据元素,如何编程? Thanks!待续! 上堂课要点回顾 线性结构(包括表、栈、队、数组)的定义和特点: 仅一个首、尾结点,其余元素仅一个直接前驱和一个直接后继。 2. 线性表 逻辑结构:“一对一” 或 1:1 存储结构:顺序、链式 运 算 :修改、插入、删除、查找 3.顺序存储 特征:逻辑上相邻,物理上也相邻; 优点:随机查找快 O(1) 缺点:插入、删除慢 O(n) 线性表的逻辑结构 线性表的顺序存储及实现 线性表的链接存储及实现 顺序表和单链表的比较 线性表的其他存储及实现 本章的基本内容是: 2.3 线性表的链式存储和实现 2.3.1 链表的存储表示 2.3.2 链表的操作实现 2.3.3 链表的算法效率分析 本节小结 链表:线性表的链接存储结构。 存储思想:用一组任意的存储单元存放线性表的元素。 2.3.1 链表的存储表示 静态存储分配 顺序表 事先确定容量 链 表 动态存储分配 运行时分配空间 连续 不连续 零散分布 0200 0208 0300 0325 … … … … 存储特点: 逻辑次序和物理次序 不一定相同。 2.元素之间的逻辑关系 用地址表示。 例:(a1, a2 ,a3, a4)的存储示意图 1、链表的存储特点 a1 0200 a2 0325 a3 0300 a4 ∧ 链表是由若干结点构成的;每个结点结构有两个部分组成: 0200 0208 0300 0325 … … … … a1 0200 a2 0325 a3 0300 a4 ∧ 结点 数据域 地址域 data:存储数据元素 next:存储指向后继结点的地址 data next 如单链表的结点结构: 数据域 地址域 2、 有关的术语 1)结点:数据元素的存储映像。由数据域和地址域两部分组成; 2)链表: n 个结点由地址链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构。 3)单链表、双链表、多链表、循环链表: 结点只有一个地址域的链表,称为单链表或线性链表; 有两个地址域的链表,称为双链表; 有多个地址域的链表,称为多链表; 首尾相接的链表称为循环链表。 a1 head a2 an …… head 头指针是指向链表中第一个结点(或为头结点或为首元结点)的地址。 头结点是在链表的首元结点之前附设的一个结点;数据域内只放空表标志或表长等信息; 首元结点是指链表中存储线性表第一个数据元素a1。 头指针 头结点 首结点 a1 4)头指针、头结点和首结点 上例链表的逻辑结构示意图有以下两种形式: ① a1 a2 /\ a4 a3 H ② a1 a2 /\ a4 a3 H 区别:① 无头结点(链式队列、链栈常用)    ② 有头结点(链表常用) 答: 讨论1. 在链表中设置头结点有什么好处? 讨论2. 如何表示空表? 头结点即在链表的首元结点之前附设的一个结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便,常用头结点。 答: 无头结点时,当头指针的值为空时表示空表; 有头结点时,当头结点的地址域为空时表示空表。 ^ 头指针 ^ 头指针 头结点 无头结点 有头结点 h h h==NULL H.next==NULL public class NodeE { //单链表结点类 public E data; //数据域,保存数据元素 public NodeE next; //地址域,引用后继结点 3、单链表的存储结构定义 (重点及难点) data

文档评论(0)

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

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

1亿VIP精品文档

相关文档