网站大量收购独家精品文档,联系QQ:2885784924

[工学]严蔚敏教材讲义 第5章 数组.ppt

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

第5章 数组和广义表 前几章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的。本章讨论的两种数据结构——数组和广义表可以看成是线性表在下述含义上的扩展: 表中的数据元素本身也是一个数据结构。 数组是读者已经很熟悉的一种数据类型,几乎所有的程序设计语言都把数组类型设定为固有类型。本章以抽象数据类型的形式讨论数组的定义和实现,使读者加深对数组类型的理解。 5.1 数组的定义 (1学时) 类似于线性表,抽象数据类型数组可形式地定义为: ADT Array{ 数据对象:ji = 0,…,bi-1, i =1,2,…,n, D={aj1j2…jn | n ( 0)称为数组的维数,bi是数组第i 维的长度,ji是数组元素的第i维下标,aj1j2…jn ∈ElemSet} 数据关系:R = {R1,R2,…,Rn} Ri={aj1…ji…jn , aj1…ji+1…jn| 0≤jk≤bk-1, 1≤k≤n 且k!=i, 0≤ji≤bi-2, aj1…j2…jn ,aj1…ji+1…jn ∈D,i=2,…,n } 基本操作: InitArray(A,n,boundl,…,boundn) 操作结果:若维数n和各维长度合法, 则构造相应的数组A,并返回OK。 DestroyArray(A) 操作结果:销毁数组A。 Value(A,e,index,…,indexn) 初始条件:A是n维数组,e为元素变量,随后是n个下标值。 操作结果:若各下标不超界,则e赋值为所指定的A的元素值, 并返回OK。 Assign(A,e,indexl,…,indexn) 初始条件:A是n维数组,e为元素变量,随后是n个下标值。 操作结果:若下标不超界,则将e的值赋给所指定的A的元素, 并返回OK。 } ADT Array 这是一个C语言风格的定义。从上述定义可见,n维数组中含有b1*b2*…bi*…*bn个数据元素,每个元素都受着n个关系的约束。在每个关系中,元素aj1j2…jn(0≤ji≤bi-2)都有一个直接后继元素。因此,就其单个关系而言,这n个关系仍是线性关系。和线性表一样,所有的数据元素都必须属于同一数据类型。数组中的每个数据元素都对应于一组下标( j1,j2,…,jn),每个下标的取值范围是0≤ji≤bi-1, bi称为第i维的长度(i=1,2,…,n)。 显然,当n=1时,n维数组就退化为定长的线性表。反之,n维数组也可以看成是线性表的推广。由此,我们也可以从另一个角度来定义n维数组。 我们可以把二维数组看成是这样一个定长线性表:它的每个数据元素也是一个定长线性表。例如。图5.1(a)所示是一个二维数组,以m行n列的矩阵形式表示。它可以看成是一个线性表 A=(α0, α 1,… αp ) ( p=m-1 或 n-1 ) 其中每个数据元素αj是一个列向量形式的线性表(如图5.1(b)所示) αj =(a0j,a1j,…,am-1,j) 0≤j≤n-1 或者αi 是一个行向量的线性表(如图5.1(c)所示)。 αi =(ai0,ai1,…,ai,n-1) 0≤i≤m-1 在C语言中,一个二维数组类型可以定义为其分量类型为类型的

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档