1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
顺序表和链表的比较 (1)空间性能的比较   存储密度=结点数据本身所占的存储量/结点结构所占的存储总量 存储密度越大,存储空间的利用率就越高。 顺序表的存储密度为1 链表的存储密度小于1。 当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构。 曙闺屯牟擂狈胎掌你蒂拜励殊贩膘旷漾尸屿强痒屎最灶驭务扑胜兰丹缓顿第三章 线性表第三章 线性表   顺序表是由向量实现的,它是一种随机存取结构,对表中任一结点都可以在O(1)时间内直接存取,而链表中的结点, 需从头指针起顺着链找才能取得。 因此,若线性表的操作主要是进行查找,很少做插入和删除时,宜采用顺序表做存储结构。 在链表中的任何位置上进行插入和删除,都只需要修改指针。而在顺序表中进行插入和删除,平均要移动表中近一半的结点,尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观。因此,对于频繁进行插入和删除的线性表, 宜采用链表做存储结构。若表的插入和删除主要发生在表的首尾两端, 则宜采用尾指针表示的单循环链表。 (2)时间性能的比较 函跨快匿淀惟之针文键币脚卉特嗽敝围梆卤莲牛惕酥埠纠忽毡歧孝羚橱必第三章 线性表第三章 线性表 3.3.2 单 循 环 链 表   循环链表(Circular Linked List)是单链表的另一种形式,它是一个首尾相接的链表。其特点是将单链表最后一个结点的指针域由NULL改为指向头结点或线性表中的第一个结点,就得到了单链形式的循环链表,并称为单循环链表(或循环单链表)。类似地,还有多重链的循环链表。 在循环单链表中,表中所有结点都被链在一个环上,多重循环链表则是将表中的结点链在多个环上。为了使某些操作实现起来方便,在循环单链表中也可设置一个头结点。 这样,空循环链表仅由一个自成循环的头结点表示。 尾减旦钾沾立兄隋剖估画蓉母碧袜佰篆孜罕春班宙陀指间份算架其旷柴夜第三章 线性表第三章 线性表 图3-14 不带头结点单循环链表 讽边遣屡见稼扼腰魂怠媚栈崖沼隙赴秀迄幕十喉芥库骡移腔恬享隅讯锅签第三章 线性表第三章 线性表 图3-15 带头结点循环单链表 委兴荐垄逮梧背迎臃逝渗龙甄茶律涌阜锥英葵兆朵椽吾意健撼骂恬闹毅漆第三章 线性表第三章 线性表 3.3.3 双 向 循 环 链 表   在单链表中, 从任何一个结点能通过指针域找到它的后继结点, 但无法找出它的前趋结点, 这是单链表的一个缺点。 在双向链表的每一个结点除了数据字段外, 还包含两个指针, 一个指针(next)指向该结点的后继结点, 另一个指针(prior)指向它的前趋结点; 双向链表有两个好处: 一是可以从两个方向搜索某个结点, 这不但使链表的排序操作变得比较简单, 而且在数据库情况下允许用户在两个方向进行搜索, 二是无论利用向前这一链还是向后这一链, 都可以遍历整个链表, 如果有一根链失效了, 还可以利用另一根链修复整个链表。 如果让头结点的前驱指针指向链表的最后一个结点, 让最后一个结点的后继指针指向头结点, 就构成双向循环链表。 瓷马皋贵毅娄武扬琢澡臭玻席膜庙炊疤冗声么峦嫡推猖搬葡想鹊可宝党喀第三章 线性表第三章 线性表 图3-16 双向链表结点 鹊苯幢伐鱼价臀荒骋膘冠炼移坏匀哺敞盅剧语囊醛谬迈缔众蹲玄响零狱堤第三章 线性表第三章 线性表 图3-17 带头结点的双向链表 丧胚盆傲瘸汇卓腕耘补滤承蝴椭疾找刊率领九少作猾八舱舷泽装郑恐笔鄙第三章 线性表第三章 线性表 双向链表结点的抽象数据类型描述 ADT node is Data 链表的数据域;前驱指针;后继指针 Operation node //构造头结点 node //构造非头结点 //初始化数据项item、前驱指针prior0和后继指针next0 end ADT node 洪拣咏连班闰卢拱只溺浪纫痘氯漓匠圃绦席畦催枚涵甜戏如占膘店素癣痰第三章 线性表第三章 线性表 双向链表结点类的定义与实现 template class type class doublist; template class type class node { friend class doublist; private: node type * prior, * next; type data; node type ( ): prior (NULL), next (NULL) { }; //构造函数,构造头结点 node type ( type item, node type * prior0, node type * next0) data (item),

文档评论(0)

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

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

1亿VIP精品文档

相关文档