比较顺序存储结构和链式存储结构.docxVIP

  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文档。上传文档
查看更多
1试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好? 答:① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一) ;要求内存中可用 存储单元的地址必须是连续的。 优点:存储密度大(=1),存储空间利用率高。缺点:插入或删除元素时不方便。 ②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值, 另一部分存放表示结点间关系的指针 优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小( 1),存储空间利用率低。 顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。 若线性表的长度变化不大,且其主要操作是查找,则采用顺序表; 若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。 作为线性表的两种基本的存储结构;顺序表和譏表。它们在存储和操作上备有优銚点?列表比较如下; 链表 优点 !■.方法简单,各种高级龜中都 2.不用籾不结点闾的邊辑关系 而増加额外的存储开销,存储密度 大;3.具有捜兀素序号逋机谊间 的特点,査找速度快. K插入、刪除时,貝 要拔到对应前驱结点, 修改指针耳呵,无需移 动元盍; 2.采用动蛊存储分 配,不会造成内存浪费 和溢出. 1.插入删徐按柞时,噩夔移动元 素,平均移动大约表中一半的元 臺,对元1S较多的N那缺救率低? 2米用静态空间■分配,需裳预先 分si足够大的存储空ra,会造成内 存的浪聲和隘出. 1、在肓些语酉中,不 支持指针,不容易实 现; 厶需要用颤外空闾存 储线准表的关系,存储 空度小3、不能随机访 间,查找时要就头指针 开始遍历* 顺序表与链表的比较 基于空间的比较 存储分配的方式 顺序表的存储空间是静态分配的 链表的存储空间是动态分配的 存储密度=结点数据本身所占的存储量/结点结构所占的存储总量 顺序表的存储密度 =1 链表的存储密度 1 基于时间的比较 存取方式 顺序表可以随机存取,也可以顺序存取 链表是顺序存取的 插入/删除时移动元素个数 顺序表平均需要移动近一半元素 链表不需要移动元素,只需要修改指针 顺序表和链表的比较 顺序表和链表各有短长。在实际应用中究竟选用哪一种存储结构呢?这要根据具体问 题的要求和性质来决定。通常有以下几方面的考虑 : 链表基I分I静态分配。程序执行之前必须明确 于 空 间 考 虑 链表 基I分I静态分配。程序执行之前必须明确 于 空 间 考 虑 规定存储规模。若线性表长度 n变 化较大,则存储规模难于预先确定 估计过大将造成空间浪费,估计太 I小又将使空间溢出机会增多。 动态分配只要内存空间尚有空闲, 就不会产生溢出。因此,当线性表 的长度变化较大,难以估计其存储 规模时,以采用动态链表作为存储 I结构为好。 I I I I 存丨为1。当线性表的长度变化不大, 储I易于事先确定其大小时,为了节约 密I存储空间,宜采用顺序表作为存储 度I结构。 基I存于I取 基 I存 于 I取 时 I 方 间 I法 考 虑 1— 随机存取结构,对表中任一结点都 顺序存取结构,链表中的结点,需 可在O (1 )时间内直接取得 线性表的操作主要是进行查找,很 少做插入和删除操作时,采用顺序 I表做存储结构为宜。 I从头指针起顺着链扫描才能取得。 插丨在顺序表中进行插入和删除,平均 入丨要移动表中近一半的结点,尤其是 删丨当每个结点的信息量较大时,移动 I I除丨结点的时间开销就相当可观。I I I除丨结点的时间开销就相当可观。 I I操I 尾两端,则I I I作I 用链表做存储结构。若表的插入和 I I删除主要发生在表的首 米用尾指针表示的单循 环链表为宜I 为什么在单循环链表中设置尾指针比设置头指针更好 ? 答:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和 终端结点都很方便,设一带头结点的单循环链表,其尾指针为 rear,则开始结点和终端结点 的位置分别是rear-〉next-〉next和rear,查找时间都是0(1)。若用头指针来表示该链表,则 查找终端结点的时间为 0( n)。 在链表中设置头结点有什么好处? 头结点即在链表的首元结点之前附设的一个结点, 该结点的数据域可以为空, 也可存放表长 度等附加信息,其作用是为了对链表进行操作时, 可以对空表、非空表的情况以及对首元结 点进行统一处理,编程更方便。

文档评论(0)

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

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

1亿VIP精品文档

相关文档