数据结构(C语言版)第二章 线性表.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C语言版)第二章 线性表

第2章 线性表 线性结构 线性结构是一个数据元素的有序(次序)集合。 它有四个基本特征:  1.集合中必存在唯一的一个第一元素;  2.集合中必存在唯一的一个最后元素;  3.除最后元素之外,其它数据元素均有唯一的后继;  4.除第一元素之外,其它数据元素均有唯一的前驱。 第一节 线性表的类型定义 2.1.1 抽象数据类型线性表的定义 通常可以下列 n 个数据元素的序列表示线性表 (Linear_List) ( a1, a2,...,ai-1,ai,ai+1,...,an) 序列中数据元素的个数 n 定义为线性表的表长 n=0 时的线性表被称为空表 称 i 为ai在线性表中的位序 线性表的抽象数据类型的定义 ADT List { 数据对象:D={ai | ai ∈ ElemSet, i=1,2,...,n, n≥0 } 数据关系:R1={ ai-1 ,ai | 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 线性表类型的应用 例1 已知集合 A 和 B,求两个集合的并集,使 A=A∪B,且 B 不再单独存在。 分析:以线性表 LA 和 LB 分别表示集合 A 和 B,对集合 B 中的所有元素一个一个地检查,将存在于线性表 LB 中而不存在于线性表 LA 中的数据元素插入到线性表 LA 中去。 具体操作步骤为:   1.从线性表 LB 中取出一个数据元素;   2.依值在线性表 LA 中进行查询;   3.若不存在,则将它插入到 LA 中。   重复上述三步直至 LB 为空表止。 对应的线性表基本操作: 1. ListDelete( LB, 1, e ); 2. LocateElem( LA, e, equal() ); 3. ListInsert( LA, n+1,e ) void union(List LA, List LB) {  La_

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档