T1链表.ppt.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  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文档。上传文档
查看更多
T1链表.ppt

Page ? * T1 链表 主讲:赖国荣 链表的概念 链表的基本操作 建表 添加节点 删除节点 按序号查找 定位 其他链表 循环链表 双链表 体验项目 --大鱼吃小鱼 程序实现的功能:遍历整个生物链 结构特点: 螳螂捕蝉 黄雀在后 数组作为数据存储结构的缺陷: 在无序数组中,搜索是低效的 而在有序数组中插入效率又很低 不管在哪一种数组中删除效率都很低 创建一个数组之后,它的大小又是不可变的 链表 链表可以是一种有序或无序的列表 链表的内容通常存储在内存中分散的位置上 链表由节点组成,每一个节点的结构都相同 节点分为数据域和链域,数据域是存放节点的内容,链域存放的是下一个节点的指针 链表的概念 用编程的思想来理解链表以及节点的关系: 一个链表中有许多类似的节点,所以有必要用一个描述节点的类来表达节点,这个类我们称为Node; 每个Node对象中都包含一个表示该节点内容的数据部分,我们称为数据域 ,和一个对下一个节点引用的字段next,即链域。 数据域 链域 数据域 链域 数据域 链域 数据域 链域 节点1 节点2 节点3 节点4 链表的概念 这种类定义有时叫做“自引用”式,它包含了一个和自己类型相同的字段next。 在一个正常的应用程序中,可以用一个包含多个数据的类的对象来代替数据项。 链表的典型运算包括: 初始化: 其作用是建立一个空表 L=null,即建立链表的 “表构架”,但不包含任何数据元素。 求表长: 求链表的长度,即有几个节点。 读链表节点: 若1≤i≤链表的长度,其结果是链表的第i个节点; 定位:按值查找节点。 插入:插入一个新节点。 删除:删除指定的节点。 链表的建立也称为链表的初始化; 链表中第一个节点,我们称为头节点,头节点的结构和普通节点一样,通常我们会在链表初始时指定。 链表中最后一个节点为空节点,在程序中表示为Null,目的为避免抛出空指针异常。 模拟一个审批流程的链表 链表的基本运算-建立链表 头节点 next 组长 next 部门经理 next 主管副总 next 总经理 next Null 链表的基本运算-建立链表 链表的基本运算-插入/删除节点 在链表中插入/删除节点是链表操作的优势。 在链表中插入节点和添加节点的概念是不同的 插入节点是将一个节点放入链表中间 添加节点是将节点简单的追加在链表最后。 链表的插入/删除节点,不必像以前的数组那样先将表中元素整体前移或后移,只需将欲插入位置的前一节点指向该节点并将该节点指向后一节点即可。 链表的基本运算-插入/删除节点 头节点 next 组长 next 部门经理 next 主管副总 next 总经理 next Null 第1步 第2步 向链表中插入一个节点 1、将当前节点的下一个节点赋值给新加节点的链域 newNode.next = this.next; 2、将新加节点赋值给当前节点的链域 this.next = newNode; 例子:AddNode.java 链表的基本运算-插入/删除节点 前趋:节点a的上一个节点。 后续:节点a的下一个节点。 让a的前趋指向a的后继,这样就达到将节点a删除的目的。 部门经理.next = 主管副总.next; this.next = node.next; 头节点 next 组长 next 部门经理 next 主管副总 next 总经理 next Null 例子:DelNode.java 链表的基本运算-按序号查找 按序号查找是对给定的参数i查找链表的第i个节点。 在链表中,由于逻辑相邻的节点并不是存储在物理相邻的单元中,所以不能像数组那样,直接按序号i查找节点,在链表中只能从头节点出发,顺链域next逐个往下搜索,直到找到第i个节点为止。 链表的基本运算-定位 定位:在链表中查找第一个与要查找的值相等的节点的序号 与按序查找相反;在链表中从头节点出发,顺链域next逐个往下搜索,直到找到第一个与给定值相同的节点的序号 完善链表删除节点的操作 删除链表中指定节点内容的节点,而非删除当前节点的下一个节点 p节点为前趋 p.next( ) 所指 向的节点为 当前节点 p.next( ).next( ) 为后续 其他链表 --循环链表 单向循环链表(循环链表) 循环链表与单链表的区别仅仅在于其尾节点的链域值不是null,而是一个指向头节点的引用 循环链表的优点: 从表中任一节点出发都能通过后移操作而扫描整个循环链表。 头节点 链域 数据域 链域 数据域 链域 数据域 链域 其他链表 --双向链表 在单链表中,每个节点所含的链域指向其后继节点,故从任一节点找其后继很方便;但要找前趋节点则比较困难

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档