- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第五章数组和广义表
§多维数组
§矩阵的压缩存储
§广义表
5.1数组的定义
图5.1Am×n的二维数组
图5.2矩阵Am×n看成n个列向量的线性表
•数组一般不做插入和删除操作,因此采用顺序
存储结构。由于存储单元是一维结构,而数组
是多维结构,则用一组连续存储单元存放数组
的数据元素就有个次序约定问题。
数组的顺序存储结构有两种:一种是按行序存储,
如高级语言BASIC、C和PASCAL语言都是以行
序为主;
a11,a12,…,a1n,a21,a22,…,a2n,…,am1,
am2,…,amn
另一种是按列优先存储,如高级语言中的
FORTRAN语,以列优先的存储序列为:
a11,a21,…,am1,a12,a22,…,am2,…,
a1n,a2n,…,amn
假设有一个3×4×2的三维数组A,共有24个元素,其逻
辑结构如图5.4所示。
图5.4三维数组的逻辑结构图
三维数组元素的标号由三个数字表示,即行、列、纵三个
方向。a142表示第1行,第4列,第2纵的元素。如果对A3×4×2(
下标从1开始)采用以行为主序的方法存放,即行下标变化最
慢,纵下标变化最快,则顺序为:
a111,a112,a121,a122,a131,a132,a141,a142,
a341,a342
采用以纵为主序的方法存放,即纵下标变化最慢,行下
标变化最快,则顺序为:
a111,a211,a311,a121,a221,a321,…,a132,a232,
a332,a142,a242,a342
n一维数组存储方式
a,i=0
LOC(i)=
LOC(i-1)+l=a+(i-1)*l+l,i0
0123456789
a35274918605477834102
llllllllll
a+i*l
LOC(i)=LOC(i-1)+l=a+i*l
二维数组
行优先存放:
设数组开始存放位置LOC(0,0)=a,每个元素
占用l个存储单元
一般LOC(i,j)=a+((i-1)*m+j-1)*l
C语言中LOC(i,j)=a+(i*m+j)*l
三维数组
§各维元素个数为m,m,m
§
123
§下标为i,i,i的数组元素的存储地址:
123
§(按行优先存放)
LOC(i,i,i)=a+
123
[(i1-1)*m2*m3+(i2-1)*m3+(i3-1)]
*l
LOC(i,i,i)=a+
123
(i*m*m+i*
文档评论(0)