5.1 数组的定义和运算.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 数组 数组的特点。 数组的存储。 几种特殊矩阵的存储及运算。 5.1 数组的定义和运算 从逻辑结构上看,数组可以看成是一般线性表的特例。 二维数组可以看成数据元素是由一维数组组成的线性表。 下面以二维数组为代表讨论,如图5.1所示的二维数组。 5.1 数组的定义和运算(续) 1、二维数组逻辑结构定义 2—Array=(D,R) 其中: D={ai j丨ai j∈D0,i=c1,c1+1,…,d1,j=c2,c2+1,…,d2, c1≤d1,c2≤d2, (c1,d1,c2, d2 )∈整数} R={ROW,COL} ROW={ai j,ai j+1丨ai j,ai j+1∈D,c1≤i≤d1,c2≤jd2-1 } COL={ai j,ai+1 j丨c1≤i≤d1-1,c2≤j≤d2,ai j,ai+1 j∈D} D0为某个数据对象。二维数组中含有(d1-c1+1)(d2-c2+1)个数据元素,每个数据元素ai j都受两个关系:ROW(行关系)和COL(列关系)的约束。在行关系中ai j+1是ai j的直接后继元素;而ai+1 j是ai j在列关系中的直接后继元素。数组所有的数据元素都必须属于同一数据对象类型。每个数据元素对应于一组下标(i,j)。(c1,d1)和(c2,d2)分别为下标i和j的一对界偶(即i和j的上界和下界)。 5.1 数组的定义和运算(续) 三维数组是由二维数组为基本元素的线性表。 三维数组中的每个元素ai j k都属于三个向量,每个元素有三个前趋和三个后继。 三维数组的逻辑结构的形式定义如下: n_Array=(D,R) 其中: D={aj1 …ji …jn | ji =ci … di , i=1…n(n0) , aj1 …ji …jn∈D0且ci 、 di均为正数} R={R1,R2,…,Rn} Ri={aj1 …ji …jn , aj1 …ji+1 …jn | jj =cj … dj , j=1…n(ji) , ji =ci … di -1 , aj1 …ji …jn , aj1 …ji+1 …jn ∈D0} 5.1 数组的定义和运算(续) 可见n维数组含有: (d1-c1+1)*(d2-c2+1)*…*(dn-cn+1)个数据元素,每个元素都属于n个“线性表”,每个数据元素都受着n个关系的约束,在n个方向上有n个前趋和n个后继。 对于n维数组,则存在着n对界偶(c1,d1),(c2,d2),…(cn,dn),分别对应其n个下标j1,j2 ,…,jn,。由此可见,n 维数组是一种较复杂的数据结构,但由于数组中各元素有统一的类型并且在通常的讨论中,数组元素的下标具有固定的上界和下界,因此数组的处理与其它复杂结构相比较为简单。 2、数组的基本操作: ⑴ Initarray(A, n, bound1, …, boundn):构造相应的数组A的存储空间,n是维数, boundi=di-ci+1,如果各维的长度合法,则构造相应的数组A的存储空间,并返回TRUE。 ⑵ Destroyarray(A):撤销数组A,释放空间。 ⑶ Getvalue(A,e, index1, …, indexn):若下标合法,则用e返回数组A中由index1,…, indexn下标所指定的元素的值。即给出一组下标,取相应的数据元素; ⑷ Setvalue(A,e,index1, …, indexn):若下标合法,则将数组A中由index1, …, indexn所指定的元素的值置为e。即给定一组下标,修改相应数据元素中的某一个或几个数据项的值。 注意:这里的数组,与C语言的数组略有不同,下标是任意整数开始,而C语言要求从零开始的。在具体问题中可以将下标转换到从零开始。 5.2 数组顺序存储结构 一般说来,数组一旦建立,则结构中的数据元素个数和元素之间的关系就不再发生变动(因为一般数组不做插入、删除操作,不移动元素),所以采用顺序存储结构存储数组是很合适的。 在计算机中,内存储器的结构是一维的。用一维的内存表示多维数组,就必须按某种次序,将数组元素排成一个线性序列,然后将这个线性序列存放在存储器中。比如二维数组的顺序存储可以有两种方式:一种是按行序存储,另一种是按列序存储。如高级语言BASIC、Pascal、C语言都以行序为主存储,Fortran语言以列为主存储。 5.2 数组顺序存储结构(续) 显

文档评论(0)

开心就好 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档