数据结构数组和广义表幻灯片.ppt
《数据结构数组和广义表幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据结构数组和广义表幻灯片.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构数组和广义表1第1页,共33页,编辑于2022年,星期六数组描述设二维数组设二维数组:其中其中:m、n为行列数为行列数,aij为第为第i行、第行、第j列的元素列的元素,0im-1,0jn-1;元素个数为元素个数为mn。二维数组可用形式化语言描述,即:二维数组可用形式化语言描述,即:A(2)=(D,R)其中:其中:D=aij|aijdatatype,0im-1,0jn-1;R=Row,Col行关系:行关系:Row=|aij,aij+1D,0im-1,0jn-2列关系:列关系:Col=|aij,ai+1jD,0im-2,0jn-1a00 a01 a0j a0n-1.ai0 ai1 aij.
2、ain-1.am-10 am-11 am-1j am-1n-1A(2)=Amn=2第2页,共33页,编辑于2022年,星期六数组描述关关系系集集Row和和Col表表明明:除除数数组组A(2)周周边边元元素素外外的的其其它它任任一一个个元元素素aij,有有两两个个直直接接前前驱驱ai-1j,aij-1,和和两两个个直直接接后后继继ai+1j,aij+1(周周边边元元素素的的前前驱驱或或后后继继可可不不足足两两个个)。n维数组也可按上述方法类似定义。维数组也可按上述方法类似定义。二维数组可如下描述二维数组可如下描述:多维数组是线性表的推广,而线性表是多维数组的特例。A0 Ai Am-1=(A0Ai
3、.Am-1)-线性表形式线性表形式a00 a01 a0j a0n-1.ai0 ai1 aij.ain-1.am-10 am-11 am-1j am-1n-1A(2)=Amn=3第3页,共33页,编辑于2022年,星期六5.1.1数组的抽象数据类型 在算法语言中,数组一旦生成,其元素的存储空间就固定下来,故数组的运算一般不包括插入和删除这样的操作。ADT Array D=aj1j2jn|aj1j2jndatatype,ji=0,bi-1其中i=1,2,n n(n0)为数组维数,bi是第i维长度,ji是数组元素第i维下标。R=R1,R2,Rn其中:Ri=|0jkbk-1,1kn且ki,0jibi-
4、2,aj1jijn,aj1ji+1jnD,i=1,2,n P ArrayInit(&A,n,d1,d2,.dn)操作结果:若维数n和各维长度合法,则生成一个n维数组Ad1d2.dn(C语言中,1n8)。ArrayDestroy(&A)初始条件:数组A存在。操作结果:撤销数组A。ArrayGet(A,i1,.,in,&e)初始条件:数组A存在,edatatype。操作结果:若各下标合法,则将元素Ai1i2,.,in的值传给变量 e。4第4页,共33页,编辑于2022年,星期六数组的抽象数据类型ArrayAssign(&A,i1,.,in,e)初始条件:数组A存在,edatatype。操作结果:若
5、各下标合法,则将变量 e的值传给数组元素Ai1i2,.,in。ADT Array;5.2数组的存储结构数组的存储结构 由于计算机的存储空间是一维的(或线性的),所以存储数组时,要将多维数组中的元素按某种次序映象到一维存储空间,即解决“降维”问题。5.2.1数组的静态存储方式数组的静态存储方式1数组的静态存储映像数组的静态存储映像 在PASCAL和C等语言中,是按低维下标优先变化(或按行优先)的方式,存储数组中的元素。如在C语言中,二维数组的映像如图5.1所示。但在FORTRAN语言中,数组元素是按高维下标优先变化或按列优先方式,存储数组中的元素。5第5页,共33页,编辑于2022年,星期六数组
6、的存储映像 a00a0,n-1ai0ai,n-1am-1,n-1映像映像 (存储器)存储器)a00 a01 a0j a0n-1.ai0 ai1 aij.ain-1.am-10 am-11 am-1j am-1n-1 Amn=图图5.1思考:思考:1.三维以上数组如何映像三维以上数组如何映像?2.“按列优先按列优先”如何映像如何映像?6第6页,共33页,编辑于2022年,星期六2.静态数组元素的地址计算v以C语言为例。设数组元素的起始地址为b,每个元素占用L个单元(元素所占单元量由元素的类型而定),元素a的地址用Loc(a)表示。1)一维数组:)一维数组:即即:Loc(a0)=b;Loc(a1)
7、=b+L;Loc(ai)=b+iL;规律:任一元素规律:任一元素ai的地址的地址:a0a1ai-1aian-1An=(a0,a1,ai,an-1)起始地址起始地址b+(ai前的元素个数前的元素个数i)L 起址起址 b:b+L:b+iL:L图图5.27第7页,共33页,编辑于2022年,星期六数组元素的地址计算2)二维数组:)二维数组:a00a0,n-1ai0aijam-1,n-1由图由图5.3知:知:Loc(a00)=b Loc(ai0)=b+(ai0前元素个数前元素个数)L=b+(in)L Loc(aij)=b+(aij前元素个数前元素个数)L=b+in+jL例例5-1 设设二二维维数数组组
8、A78,起起始始地地址址b=1000,每每个个元元素素所所占占单单元元量量L=3,则则Loc(a5,6)=1000+(58+6)3=1138。inj映像映像 起址起址 b:b+L:b+inL:b+in+jL:图图5.3a00 a01 a0j a0n-1.ai0 ai1 aij.ain-1.am-10 am-11 am-1j am-1n-1 Amn=8第8页,共33页,编辑于2022年,星期六数组元素的地址计算3)三维数组)三维数组:由图5.5可知:Loc(a000)=b 图图5.5 Loc(ai00)=b+(inp)L Loc(aij0)=b+(inp+jp)L Loc(aijk)=b+(in
9、p+jp+k)L aijk前的元素个数。a000ai00aij0aijk9第9页,共33页,编辑于2022年,星期六数组元素的地址计算4)n维数组维数组 从以上的地址公式推导中得出这样一条规律:数组中任一元素的地址数组中任一元素的地址=起址起址b+该元素前的个数该元素前的个数元素单元量元素单元量L。故n维数组Au1u2.un中任一元素ai1.in的地址为:Loc(ai1i2in)=b+(i1u2u3 un+i2u3u4 un+in-1un+in)L =b+()L元素按“列优先”方式存储时,地址计算方法类似,不再赘述。有了数组元素的地址计算公式,给出相应参数后,能够很快求出任一元素的地址,然后按
10、地址存取相应元素,故对数组的存取是随机存取(或按公式存取)。5.2.2数组的动态存储方式(略)数组的动态存储方式(略)10第10页,共33页,编辑于2022年,星期六5.2 矩阵的压缩存储信息的压缩存储是一项专业技术,在当今的多媒体应用中显得尤为重要。但本节只是讨论矩阵(或二维数组)中元素的压缩存储。在矩阵中,往往会出现许多值相同的元素或元素,为节省存储空间,可以采用某些技术对这类矩阵进行压缩存储。压缩存储的原则是:对多个值相同的元素只存储其中之一,对元素甚至不分配存储空间。5.3.1特殊矩阵的压缩存储特殊矩阵的压缩存储 特殊矩阵:值相同的元素或元素在矩阵中的分布遵循一定规律。1.对称矩阵对称
11、矩阵:满足aij=aji,(1i,jn)a11 a22 aii ann Ann=aijaji11第11页,共33页,编辑于2022年,星期六特殊矩阵的压缩aij与aji对称相等,二者只需分配一个存储单元,即只存储包括主对角线的下三角(或上三角)元素。于是Ann所需单元数为n(n+1)/2,而不压缩存储需要n2个单元。当n很大时,几乎能压缩原存储空间的一半。具体做法:设置数组Sn(n+1)/2+1作为An.n的存储空间,且按行的次序存放Ann中包括主对角线的下三角元素,如图5.5所示。a11a21a22aijann Sn(n+1)/2+1:1 2 3 .k.n(n+1)/2图图5.5其中其中ai
12、j存入存入Sk单元,下标(单元,下标(i,j)与)与k的关系为:的关系为:i(i-1)/2+j 当当ij 时;时;Si(i-1)/2+j 当当ij 时;时;k=即:即:aij=j(j-1)/2+i 当当ij时。时。Sj(j-1)/2+i 当当ij)(ij)时,时,K=0.K=0.对于下三角矩阵,类似于对称矩阵,即只存储包括主对角对于下三角矩阵,类似于对称矩阵,即只存储包括主对角线的下三角元素。而当线的下三角元素。而当ijidata1 A-datatu 图图5.816第16页,共33页,编辑于2022年,星期六三元组表的转置然而,稀疏矩阵的压缩存储会给矩阵运算带来一些不便,算法要复杂些。这里的运
13、算指求矩阵的转置,两矩阵相加和相乘等。我们只讨论矩阵的转置的算法。未压缩前,求矩阵A的转置矩阵B,算法很简单:for(col=1;col=nu;col+)for(row=1;rowdata3.j=1,故将A-data3转置:(1,2,6)=B-data1,又A-data6.j=1,所以A-data6转置:(1,4,3)=B-data2,完成第一列的转换,依此类推。算法描述算法描述:void Transm(Tsmtype A,Tsmtype B)int p,q,col;B-mu=A-nu;B-nu=A-mu;B-tu=A-tu;if(A-tu!=0)q=1;/目标表的序号 for(col=1;c
14、olnu;col+)for(p=1;ptn;p+)if(A-datap.j=col)B-dataq.i=A-datap.j;/行列互换 B-dataq.j=A-datap.i;B-dataq.v=A-datap.v;q+;18第18页,共33页,编辑于2022年,星期六三元组表的转置 ijv122154216238329413 p 123456 0 2 0 0 4 6 0 8 0 0 0 9 0 0 0 3 0 0 0 0 A45=1 2 3 4 5 colijv126 q 1234561432122393285140 6 0 3 2 0 9 0 0 8 0 0 0 0 0 0 4 0 0 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 数组 广义 幻灯片
限制150内