第2章 线性表第2 线性表.docVIP

  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文档。上传文档
查看更多
第2章 线性表第2 线性表

第二章 线性表 本章要求: 掌握线性表的逻辑结构和各种存储表示方法,定义在逻辑结构上的各种基本运算以及在存储结构上如何实现这些基本运算。 能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。 主要内容: 线性表的抽象数据类型、线性表的顺序表示和实现、线性表的链式表示和实现、静态链表 线性表的概念以及抽象数据类型定义 线性表顺序存储结构和链接存储结构的基本思想 基于顺序表和单链表的基本操作的实现以及算法时间性能分析 线性表两种存储结构比较 双向链表和循环链表概念 学习难点: 对顺序表存储结构的理解和应用 单链表存储结构的理解以及应用 对头指针、头结点、尾结点的理解和应用 单链表的基本算法 重点整理: 线性表是零个或多个具有相同数据类型的数据元素的有限序列。在这个序列中每个元素最多有一个前驱和后继。 线性表的顺序存储结构称为顺序表,是用一段地址连续的存储单元依次存储线性表的数据元素,通常用一维数组来实现。 顺序表中数据元素的逻辑关系是用存储位置表示的,顺序表是随机存取结构。 在顺序表上实现插入和删除操作,在等概率情况下,平均要移动表中一半的元素,算法的平均时间复杂度为O(n)。 顺序表的优点;①无需为表示表中元素之间的逻辑关系而增加额外的存储空间;②随机存取。顺序表的缺点:①插入和删除操作需移动大量的元素;②表的容量难以确定。 线性表的链接存储结构称为链表,是用一组任意的存储单元存放线性表的数据元素,元素的逻辑顺序和物理顺序不一定相同。 在单链表中,头指针指向第一个元素所在结点,具有标识一个单链表的作用;最后一个元素所在结点的指针域为空,称为尾标志;为了运算方便,在单链表的开始结点之前附设一个类型相同的结点,称为头结点。 单链表中数据元素之间的逻辑关系用指针表示,单链表是顺序存取结构。 在单链表上实现插入和删除操作,无需移动结点,在将工作指针指向合适的位置后,仅需修改结点之间的链接关系。 对顺序表和单链表的比较要考虑时间性能和空间性能两个方面,对一般的线性表,若线性表需频繁查找却很少进行插入和删除操作,或其操作和元素在表中的位置密切相关时,宜采用顺序表作为存储结构;若线性表需频繁插入和删除时,则宜采用单链表做存储结构。当线性表中元素个数变化较大或者未知时,最好使用单链表实现;而如果用户事先知道线性表的大致长度,使用顺序表的空间效率会更高。 循环链表是在单链表中,将终端结点的指针域由空指针改为指向头结点,通常采用尾指针来标识。对循环链表的操作特别要注意循环条件。 双链表是在单链表的每个结点中再设置一个指向其前驱结点的指针域。双链表是一种对称结构。 练习题 一、 填空 在顺序表中,等概率情况下,插入和删除一个元素平均需移动( )个元素,具体移动元素的个数与( )和( )有关。 【解答】表长的一半,表长,该元素在表中的位置 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的存储地址是( )。 【解答】108 【分析】第5个元素的存储地址=第1个元素的存储地址+(5-1)×2=108 设单链表中指针p 指向结点A,若要删除A的后继结点(假设A存在后继结点),则需修改指针的操作为( )。 【解答】p-next=(p-next)-next 单链表中设置头结点的作用是( )。 【解答】为了运算方便 【分析】例如在插入和删除操作时不必对表头的情况进行特殊处理。 非空的单循环链表由头指针head指示,则其尾结点(由指针p所指)满足( )。 【解答】p-next=head 在由尾指针rear指示的单循环链表中,在表尾插入一个结点s的操作序列是( );删除开始结点的操作序列为( )。 【解答】s-next =rear-next; rear-next =s; rear =s; q=rear-next-next; rear-next-next=q-next; delete q; 一个具有n个结点的单链表,在指针p所指结点后插入一个新结点的时间复杂度为( );在给定值为x的结点后插入一个新结点的时间复杂度为( )。 【解答】Ο(1),Ο(n) 【分析】在p所指结点后插入一个新结点只需修改指针,所以时间复杂度为Ο(1);而在给定值为x的结点后插入一个新结点需要先查找值为x的结点,所以时间复杂度为Ο(n)。 可由一个尾指针唯一确定的链表有( )、( )、( )。 【解答】循环链表,循环双链表,双链表 选择题 线性表的顺序存储结构是一种( )的存储结构,线性表的链接存储结构是一种( )的存储结构。 A 随机存取 B 顺序存取 C 索引存取 D 散列存取 【解答】A,B 线性表采用链接存储时,其地址( )。 A 必须是连续的      B 部分地址必须是连续的 C

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档