4-数据结构-清华大学严蔚敏PPT-串.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文档。上传文档
查看更多
4-数据结构-清华大学严蔚敏PPT-串

第5章 数组和广义表;5.1 数组的定义;5.1.1 数组的抽象数据类型定义 ; 由上述定义知,n维数组中有b1?b2 ? … ? bn个数据元素,每个数据元素都受到n维关系的约束。 2 直观的n维数组 以二维数组为例讨论。将二维数组看成是一个定长的线性表,其每个元素又是一个定长的线性表。 设二维数组A=(aij)m?n,则 A=(α1,α2,…,αp) (p=m或n) 其中每个数据元素αj是一个列向量(线性表) : αj =(a1j ,a2j ,…,amj) 1≦j≦n 或是一个行向量: αi =(ai1 ,ai2 ,…,ain) 1≦i≦m 如图5-1所示。; a11 a12 … a1n a21 a22 … a2n … … … … … am1 am2 … amn;5.2 数组的顺序表示和实现;通常有两种顺序存储方式 ⑴ 行优先顺序(Row Major Order) :将数组元素按行排列,第i+1个行向量紧接在第i个行向量后面。对二维数组,按行优先顺序存储的线性序列为: a11,a12,…,a1n, a21,a22,…a2n ,……, am1,am2,…,amn PASCAL、C是按行优先顺序存储的,如图5-2(b)示。 ⑵ 列优先顺序(Column Major Order) :将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量之后,对二维数组,按列优先顺序存储的线性序列为: a11,a21,…,am1, a12,a22,…am2, ……, an1,an2,…,anm FORTRAN是按列优先顺序存储的,如图5-2(c)。;图5-2 二维数组及其顺序存储图例形式; 设有二维数组A=(aij)m?n,若每个元素占用的存储单元数为l(个),LOC[a11]表示元素a11的首地址,即数组的首地址。 1 以“行优先顺序”存储 ⑴ 第1行中的每个元素对应的(首)地址是: LOC[a1j]=LOC[a11]+(j-1)?l j=1,2, …,n (2) 第2行中的每个元素对应的(首)地址是: LOC[a2j]=LOC[a11]+n?l +(j-1)?l j=1,2, …,n … … … ⑶ 第m行中的每个元素对应的(首)地址是: LOC[amj]=LOC[a11]+(m-1)?n?l +(j-1)?l j=1,2, …,n ; 由此可知,二维数组中任一元素aij的(首)地址是: LOC[aij]=LOC[a11]+[(i-1)?n +(j-1)]?l (5-1) i=1,2, …,m j=1,2, …,n 根据(5-1)式,对于三维数组A=(aijk)m?n?p,若每个元素占用的存储单元数为l(个),LOC[a111]表示元素a111的首地址,即数组的首地址。以“行优先顺序”存储在内存中。 三维数???中任一元素aijk的(首)地址是: LOC(aijk)=LOC[a111]+[(i-1)?n?p+(j-1)?p+(k-1)]?l (5-2) 推而广之,对n维数组A=(aj1j2…jn) ,若每个元素占用的存储单元数为l(个),LOC[a11 …1]表示元素a11 …1的首地址。则 以“行优先顺序”存储在内存中。; n维数组中任一元素aj1j2…jn的(首)地址是: LOC[aj1j2…jn]=LOC[a11 …1]+[(b2?…?bn)?(j1-1) + (b3?…?bn)?(j2-1)+ … + bn?(jn-1-1)+ (jn-1)] ?l (5-3);2 以“列优先顺序”存储 ⑴ 第1列中的每个元素对应的(首)地址是: LOC[aj1]=LOC[a11]+(j-1)?l j=1,2, …,m (2) 第2列中的每个元素对应的(首)地址是: LOC[aj2]=LOC[a11]+m?l +(j-1)?l j=1,2, …,m … … … ⑶ 第n列中的每个元素对应的(首)地址是: LOC[ajn]=LOC[a11]+ (n-1)?m?l +(j-1)?l j=1,2, …,m 由此可知,二维数组中任一元素

文档评论(0)

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

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

1亿VIP精品文档

相关文档