数据结构经典课件.ppt
《数据结构经典课件.ppt》由会员分享,可在线阅读,更多相关《数据结构经典课件.ppt(55页珍藏版)》请在三一办公上搜索。
1、第5章 数组和广义表,1教学目的:掌握数组和广义表的定义、特点及典型算法。2教学要求:掌握数组在以行为主的存储结构中的地址计算方法。掌握矩阵实现压缩存储时的下标变换。理解稀疏矩阵的两种存储方式的特点和适用范围,领会以三元组表示稀疏矩阵时进行运算采用的处理方法。掌握广义表的定义及其存储结构,学会将广义表分解为表头,表尾的方法。3教学重点:掌握特殊矩阵的压缩存储。掌握稀疏矩阵采用三元组存储时典型算法的实现。广义表的定义、运算。4教学难点:数组的十字链表存储结构。,图5.1 Amn的二维数组,5.1 数组,5.1.1 数组的逻辑结构 是线性表的推广 数组特点:元素本身可以是具有某种结构的数据,但属于
2、同一数据类型。比如:一维数组可以看作一个线性表,二维数组可以看作“数据元素是一维数组”的一维数组,依此类推。图5.1是一个m行n列的二维数组。,图5.2 矩阵Amn看成n个列向量的线性表,图5.3 矩阵Amn看成m个行向量的线性表,推广:n维数组每个数据元素受n个关系的约束,任一单个关系,仍是线性关系。,通过以上分析可总结出数组具有以下性质:数组中数据元素数目固定。数组中数据元素具有相同的数据类型。数组中每一个数据元素由唯一的一组下标来标识。数组是随机存取的存储结构。在数组上不能做插入、删除数据元素的操作。通常在各种高级语言中数组一旦被定义,每一维的大小及上下界都不能改变。两种操作:取值操作:
3、给定一组下标,读其对应的数据元素。赋值操作:给定一组下标,存储或修改其相对应的数据元素。,二维数组形式化表示为:,数组的顺序存储结构有两种:2Array(D,R)D=aij|i=c1,c1+1,d1,j=c2,c2+1,d2,aijD0 R=Row,Col Row|c1 i d1,c2 j d2-1,aij,ai(j+1)D0 Col|c1 i d1-1,c2 j d2,aij,a(i+1)j D0,5.1.2 数组的存储结构,数组的顺序存储结构有两种:1.按行序存储。如:BASIC、COBOL和PASCAL语言。2.按列序存储。如:FORTRAN语言。二维数组Amn以行为主的存储序列为:a1
4、1,a12,,a1n,a21,a22,a2n,am1,am2,amn 而以列为主的存储序列为:a11,a21,,am1,a12,a22,am2,a1n,a2n,amn,设有二维数组Amn,按元素的下标求其地址的计算:以“以行为主序”的分配为例:设数组的基址为LOC(a11),每个数组元素占据l个地址单元,那么aij的物理地址计算为:LOC(aij)=LOC(a11)+(i-1)*n+j-1)*l,在C语言中,数组中每一维的下界定义为0,则:LOC(aij)=LOC(a00)+(i*n+j)*l 推广到一般二维数组:Ac1.d1c2.d2,aij地址计算函数为:LOC(aij)=LOC(a c1
5、 c2)+(i-c1)*(d2-c2+1)+(j-c2)*l 同理对于三维数组Amnp,即mnp数组,aijk其物理地址为:LOC(aijk)=LOC(a111)+(i-1)*n*p+(j-1)*p+k-1)*l 推广到一般的三维数组:Ac1.d1c2.d2c3.d3,则aijk物理地址为:LOC(i,j,k)=LOC(a c1 c2 c3)+(i-c1)*(d2-c2+1)*(d3-c3+1)+(j-c2)*(d3-c3+1)+(k-c3)*l,容易看出,数组元素的存储位置是其下标的线性函数,一旦数组下标的界偶确定之后,数组中的元素可随机存取。我们称具有这一特点的存储结构为随机存储结构。,对
6、于维数组A(c1.d1,c2.d2,,cn.dn),元素aj1j2jn的存储地址的计算公式:,例5.1 若矩阵Amn 中存在某个元素aij满足:aij是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。基本思想:在矩阵A中求出每一行的最小值元素,然后判断该元素是不是它所在列中的最大值,是则打印输出,接着处理下一行。矩阵A用一个二维数组表示。,void saddle(int A,int m,int n)int i,j,min;for(i=0;i=m)printf(%d,%d,%dn,i,k,min);/*if*/*for i*/,算法的时间性能
7、为O(m*(n+m*n)。,5.2 特殊矩阵的压缩存储特殊矩阵:1.非零元素非常少;2.矩阵元素的分布有一定规律所谓压缩存储是指:为多个值相同的元素只分配一个存储空间,值为零的元素不分配空间。,5.2.1 对称矩阵 特点:在一个n阶方阵中,有aij=aji,其中1i,jn,如图5.3所示是一个5阶对称矩阵。,对于元素aij,特点是:ij且1in,下标k与i、j的关系为:k=i*(i-1)/2+j-1(kn*(n+1)/2)若ij,则aij是上三角中的元素,因为aij=aji,这样,访问上三角中的元素aij时则去访问和它对应的下三角中的aji即可,因此将上式中的行列下标交换就是上三角中的元素在S
8、A中的对应关系:k=j*(j-1)/2+i-1(kn*(n+1)/2)对于对称矩阵中的任意元素aij,若令I=max(i,j),J=min(i,j),则将上面两个式子综合起来得到:k=I*(I-1)/2+J-1。,对于对称矩阵,因其元素满足aij=aji,只存下三角(或上三角)矩阵,将nn个元素压缩到n(n+1)/2个空间中。,5.2.2 三角矩阵 如图5.5的矩阵称为三角矩阵,其中c为某个常数。其中5.5(a)为下三角矩阵:主对角线以上均为同一个常数;(b)为上三角矩阵,主对角线以下均为同一个常数;下面讨论它们的压缩存储方法。,(1)下三角矩阵中元素aij(ij)在一维数组A中的位置为:Lo
9、ci,j=Loc1,1+前i-1行非零元个数+第i行中aij前非零元个数 即:Loci,j=Loc1,1+i(i-1)/2+j-1设存入向量:SAn*(n+1)/2+1中,SA k与aij的对应关系为:,(2)上三角矩阵,也可以将其压缩存储到一个大小为n(n+1)/2的一维数组C中。其中元素aij(ij)在数组C中的存储位置为:,图5.8 带状矩阵A,三对角带状矩阵有如下特点:i=1,j=1,2;1in,j=i-1,i,i+1;i=n,j=n-1,n;时,aij非零,其它元素均为零。,当,5.2.3 带状矩阵,1.确定存储该矩阵所需的一维向量空间的大小 假设每个非零元素所占空间的大小为1个单元
10、。所需一维向量空间的大小为2+2+3(n-2)=3n-2,如图5.9所示。,图5.9 带状矩阵的压缩形式,2.确定非零元素在一维数组空间中的位置 Loci,j=Loc1,1+前i-1行非零元个数+第i行中aij前非零元个数;前i-1行元素个数=3(i-1)-1(因为第1行只有2个非零元素);第i行中aij前非零元素个数=j-i+1,其中,由此得到,Loci,j=Loc1,1+3(i-1)-1+j-i+1=Loc1,1+2(i-1)+j-1,5.3 稀疏矩阵的压缩存储 设mn矩阵中有t个非零元素且tmn,这样的矩阵称为稀疏矩阵。,5.3.1 稀疏矩阵 非零元个数远远小于零元个数。,图5.10 稀
11、疏矩阵,三元组表的类型说明如下:define SMAX 1024 typedef struct int i,j;datatype v;SPNode;typedef struct int mu,nu,tu;SPNode dataSMAX;SPMatrix;,1)用三元组表实现稀疏矩阵的转置运算如图所示的67矩阵M,它的转置矩阵就是76的矩阵N,并且N(row,col)=M(col,row),其中,1row7,1col6。,采用矩阵的正常存储方式时,实现矩阵转置的经典算法如下:void TransMatrix(datatype sourcenm,datatype destmn)int i,j;fo
12、r(i=0;im;i+)for(j=0;j n;j+)desti j=sourcej i;,矩阵source的三元组表A的行、列互换就可以得到B中的元素,如图5.13所示。,(i,j,x)(j,i,x)A B,图5.13 稀疏矩阵的转置示例,为了保证转置后的矩阵的三元组表B也是以“行序为主序”进行存放,则需要对行、列互换后的三元组表B按B的行下标(即A的列下标)大小重新排序,如图5.14所示。,图5.14 矩阵的转置(用三元组表示矩阵),方法一:,图5.15 矩阵的转置,附设一个位置计数器j,用于指向当前转置后元素应放入三元组表B中的位置。处理完一个元素后,j加1,j的初值为1。,具体转置算法
13、如下:Void TransposeTSMatrix(TSMatrix A,TSMatrix*B)int i,j,k;B-mu=A.nu;B-nu=A.mu;B-tu=A.tu;if(B-tu0),j=1;for(k=1;kdataj.row=A.datai.col B-dataj.col=A.datai.row;B-dataj.e=A.datai.e;j+;,【算法5.1 基于稀疏矩阵的三元组表示矩阵的转置算法】,时间复杂度为O(A.nA.len),最坏情况当A.len=A.mA.n时,时间复杂度为O(A.mA.n2)。采用正常方式实现矩阵转置的算法时间复杂度为O(A.mA.n)。方法二:依次
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 经典 课件

链接地址:https://www.31ppt.com/p-2062529.html