(数据结构与算法设计课件2.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文档。上传文档
查看更多
(数据结构与算法设计课件2

第二章 线性表 线性表是一种最简单的线性结构。   什么是线性结构?简单地说,线性结构是一个数据元素的有序(次序)集合。它有四个基本特征:  1.集合中必存在唯一的一个第一元素;  2.集合中必存在唯一的一个最后元素;  3.除最后元素之外,其它数据元素均有唯一的后继;  4.除第一元素之外,其它数据元素均有唯一的前驱。 2.1.1 抽象数据类型线性表的定义    通常可以下列“ n 个数据元素的序列”表示线性表 (Linear_List)    (a1,a2 ,...,ai ,..., an )   序列中数据元素的个数 n 定义为线性表的表长;n=0 时的线性表被称为空表。称 i 为ai在线性表中的位序。 其抽象数据类型的定义如下: ADT List {  数据对象:D={ai|ai∈ ElemSet, i=1,2,...,n, n≥0 } 数据关系:R1={ ai-1 ,ai | , ∈D, i=2,...,n } 基本操作:   {结构初始化}   InitList( L )    操作结果:构造一个空的线性表 L 。 {销毁结构}   DestroyList( L )    初始条件:线性表 L 已存在。    操作结果:销毁线性表 L 。 {引用型操作} ListEmpty( L )    初始条件:线性表L已存在。    操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE。 ListLength( L )    初始条件:线性表 L 已存在。    操作结果:返回 L 中元素个数。 PriorElem( L, cur_e, pre_e )    初始条件:线性表 L 已存在。    操作结果:若 cur_e 是 L 中的数据元素,则用 pre_e 返回它的前驱,否则操作失败,pre_e 无定义。 NextElem( L, cur_e, next_e )    初始条件:线性表 L 已存在。    操作结果:若 cur_e 是 L 中的数据元素,则用 next_e 返回它的后继,    否则操作失败,next_e 无定义。 GetElem( L, i, e )    初始条件:线性表 L 已存在,1≤i≤LengthList(L)。    操作结果:用 e 返回 L 中第 i 个元素的值。 LocateElem( L, e, compare( ) )    初始条件:线性表 L 已存在,compare( ) 是元素判定函数。    操作结果:返回 L 中第1个与 e 满足关系 compare( ) 的元素的位序。    若这样的元素不存在,则返回值为0。 ListTraverse(L, visit( ))   初始条件:线性表 L 已存在,visit( ) 为元素的访问函数。   操作结果:依次对 L 的每个元素调用函数 visit( )。   一旦 visit( ) 失败,则操作失败。 {加工型操作} ClearList( L )    初始条件:线性表 L 已存在。    操作结果:将 L 重置为空表。 PutElem( L, i, e )    初始条件:线性表L已存在,1≤i≤LengthList(L)。    操作结果:L 中第 i 个元素赋值同 e 的值。 ListInsert( L, i, e )    初始条件:线性表 L 已存在,1≤i≤LengthList(L)+1。    操作结果:在 L 的第 i 个元素之前插入新的元素 e,L 的长度增1。 ListDelete( L, i, e )    初始条件:线性表 L 已存在且非空,1≤i≤LengthList(L)。    操作结果:删除 L 的第 i 个元素,并用 e 返回其值,L 的长度减1。 } ADT List 2.1.2 线性表类型的应用 如果已经实现了上述定义的线性表类型,那么在应用问题的求解中就可以利用类型中定义的各种操作。下面将举三个例子说明之。 例2-1 已知集合 A 和 B,求两个集合的并集,使 A=A∪B,且 B 不再单独存在。   从集合的观点看,此问题求解的方法很简单,只要对集合 B 中的所有元素一个一个地检查,看看在集合 A 中是否存在相同元素,若不存在,则将该元素插入到集合 A,否则舍弃之。   要在计算机中求解,首先要确定如何表示集合。集合可以有多种表示方法,对上述集合求并的问题可以用线性表表示集合。   现假设以线性表 LA 和 LB 分别表示集合 A 和 B,即构造两个线性表 LA 和 LB,它们的数据元素分别为集合 A 和 B 中的成员。   由此,上述集合求并的问题便可演绎为:要求对线性表作如下操作:扩大线性表 LA,将存在于

文档评论(0)

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

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

1亿VIP精品文档

相关文档