数据结构-第5章-数组.ppt

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

第五章数组5.1数组的定义5.2数组的顺序表示和实现5.3矩阵的压缩存储5.3.1特殊矩阵5.3.2稀疏矩阵算法4.6首先我们来建立一个三元组表:voidcreatsmatrix(datatypeA1,Tsmatrix*A)/*A1为m行n列的稀疏矩阵,A为产生的相对的三元组表*/{k=1;for(row=0;row<m;row++)/*按行优先顺序扫描A1中的元素,不为0者存入A中*/for(col=0;col<n;col++)if(A1[row][col]!=0){A.data[k].i=row;A.data[k].j=col;A.data[k].v=A1[row][col];k++;}A.mu=m;A.nu=n;A.tu=k-1;}/*存入A中A1的行数,列数,非零元个数*/**数组和广义表可看成是一种特殊的线性表,其特殊在于,表中所在的元素本身也是一种线性表。5.1数组的定义数组是我们最熟悉的数据类型,在早期的高级语言中,数组是唯一可供使用的数据类型。由于数组中各元素具有统一的类型,并且数组元素的下标一般具有固定的上界和下界,因此,数组的处理比其它复杂的结构更为简单。例如,二维数组:a11a12…a1na21a22…a2n…………am1am2…amnAmn=可以看成是由若干个行向量组成的向量,也可以看成是若干个列向量组成的向量。在Pascal语言中,一个二维数组类型可以定义为其分量类型为一维数组类型的一维数组类型,也就是说,typematrix=array[1..m,1..n]ofdatatype;等价于:typematrix=array[1..m]ofarray[1..n]ofdatatype;同理,一个维数组类型可以定义为其数据元素为多维数组类型的一维数组类型。数组一旦被定义,它的维数和维界就不再改变。因此,除了结构的初始化和销毁之外,数组只有存取元素和修改元素值的操作。5.2数组的顺序表示和实现由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放在存储器中。又由于对数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。因此,一般都是采用顺序存储的方法来表示数组。通常有两种顺序存储方式:⑴行优先顺序——将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。以二维数组为例,按行优先顺序存储的线性序列为:a11,a12,…,a1n,a21,a22,…a2n,……,am1,am2,…,amn在PASCAL、C语言中,数组就是按行优先顺序存储的。⑵列优先顺序——将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量之后,A的m*n个元素按列优先顺序存储的线性序列为:a11,a21,…,am1,a12,a22,…am2,……,an1,an2,…,anm在FORTRAN语言中,数组就是按列优先顺序存储的。a11a12……..a1na21a22……..a2nam1am2……..amn….Loc(aij)=Loc(a11)+[(i-1)n+(j-1)]*l??按行序为主序存放amn……..am2am1……….a2n……..a22a21a1n…….a12a1101n-1m*n-1n??按列序为主序存放01m-1m*n-1mamn……..a2na1n……….am2…

文档评论(0)

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

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

1亿VIP精品文档

相关文档