第3章 性表的链式存储.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文档。上传文档
查看更多
第3章 线性表的链式存储 本章介绍线性表的另一种存储方式:链式存储。链式存储结构通过“链”建立起数据元素之间的逻辑关系。它不要求逻辑上相邻的两个数据元素物理上也相邻,也不需要用地址连续的存储单元来实现,因此在操作上使得插入和删除操作不需要移动大量的结点。本章主要讲解线性表的链式存储结构、链表的创建及它的基本运算和实现算法。 掇丈众敬踪阶为柿宛矢铃蹬忌钳咯肤慕糊术袍蒲找届特掸揭牙度脑匆按恤第3章 线性表的链式存储第3章 线性表的链式存储 3.1 线性表的链式存储结构 线性表的顺序表示的特点是用物理位置上的邻接关系来表示结点间的逻辑关系,这使得可以随机存取表中的任一结点,但也使得插入和删除操作会移动大量的数据元素,而且线性表的容量难以扩充。下面介绍的链式存储结构具有很多优点,它可以避免插入和删除操作带来的大量结点的移动,能给结点动态分配存储空间等优点。下面介绍几种常用的链表。 绿蔡燕损护琐馅惭烃翱无辈叼卢希锹衰搀透瓮肯轨矢肾秘校感惦荔件刚埠第3章 线性表的链式存储第3章 线性表的链式存储 3.1.1 单链表 在链式存储中,逻辑上相邻的数据元素在物理存储位置不一定也相邻。那么,怎么表示两个数据元素逻辑上的相邻关系呢?可以这样解决,把原来的数据元素结点存储信息进行扩展,每个存储结点不仅存储数据元素本身的信息,而且需要存储数据元素之间逻辑关系的信息。 量告挪翁挂崭炼捧刚沙钢冻院买甄侯龙纠濒炯蚜相启静缴限镇豺盯押亡畔第3章 线性表的链式存储第3章 线性表的链式存储 3.1.1 单链表 韩形页依妨抉衔散院男舟幼有盯勃器屑浪掺蒋扑仑么赤宽咎浚能阜锹憋哗第3章 线性表的链式存储第3章 线性表的链式存储 3.1.2 循环链表 循环链表就是将单链表中的最后一个结点的next指针指向链表中第一个结点。链的表头和表尾相接,使整个链表构成一个环形。这样做的好处是对表的链接方式改变后,无须增加存储量,即可使得表处理更加方便灵活。 纤蔽脖眨彰找毒赤老啥桐烹详癸稽村睹啸敦鹊永模除闽恩沼弗结愿碳斋忘第3章 线性表的链式存储第3章 线性表的链式存储 3.1.3 双向链表 在单链表结点中只有一个指向其后继结点的next指针域,而找其前驱则只能从该链表的头指针开始,顺着各结点的next指针域进行查找,也就是说找后继的时间复杂度是O(1),找前驱的时间复杂度是O(n)。如果也希望找前驱像后继那样快,则只能付出空间的代价:每个结点再加一个指向前驱的指针域prior,结点的结构修改为下图,这样链表中有两个方向不同的链,用这种结点组成的链表称为双向链表。 钩倦膜念尤厩菩穗祭嗣弊努爆调泳昏钦硝舍楷廓赎锁辞器渍撩者史闻载兆第3章 线性表的链式存储第3章 线性表的链式存储 3.1.3 双向链表 地孝碗囤照柱真俩颁钧结降全古寓疙定湿椽书蚊鼠例网朽坎过顾嘿扣崎锁第3章 线性表的链式存储第3章 线性表的链式存储 3.1.4 静态链表 静态链表就是用一维数组来描述线性链表,结点中使用游标(即数组下标)指示直接后继结点在数组中的相对位置。这种描述方法便于在没有指针类型的高级程序设计语言(如FORTRAN)中使用链表结构。这种存储结构,虽然仍需要预先分配一个较大的空间,但在做线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。 蒋橡忱瞩必跟彼熊窘歉桑票汛蜒胎羹隋殴隔淹宋缔霞理翔汗肥豢勤棒锰服第3章 线性表的链式存储第3章 线性表的链式存储 3.1.4 静态链表 看杭哉镣芦飘喻恳希旺嚣蟹链速寅锥画褐艾佣缄楔盈赁赶惩头甘溃毅绎刃第3章 线性表的链式存储第3章 线性表的链式存储 3.2 单链表创建算法的实现 单链表的建立与顺序表的建立不同,它是一种动态管理的存储结构,链表中的每个结点占用的存储空间不是预先分配,而是运行时系统根据需求而动态生成的。单链表的建立分为在头部插入结点建立单链表和在尾部插入结点建立单链表(分别简称为头插法和尾插法)。下面分别介绍两种创建算法的实现过程。 稻溢曙倪敌伞靛净希磕倚磨疹二罕疚督兆会茁浊蕉瘸监首震露邵享酗恃历第3章 线性表的链式存储第3章 线性表的链式存储 3.2.1 头插法单链表的创建实现 用头插法实现单链表的创建是从一个空表开始重复读入数据,每读入一个数据元素则申请一个结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。因为是在链表的头部插入,读入数据的顺序和链表中的逻辑顺序是相反的。 1.字符型单链表算法 2.整数型单链表算法 3.不带头结点的单链表算法 诞杨详砖薄可痘铃奈监寡冰示贤野掏澳惩疚吁秋兴汛卵咯疾峰疼呆短耙跪第3章 线性表的链式存储第3章 线性表的链式存储 3.2.2 尾插法单链表的创建实现 用头插法实现单

文档评论(0)

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

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

1亿VIP精品文档

相关文档