JAVA数据结构第五章数组和广义表.ppt
《JAVA数据结构第五章数组和广义表.ppt》由会员分享,可在线阅读,更多相关《JAVA数据结构第五章数组和广义表.ppt(51页珍藏版)》请在三一办公上搜索。
1、,第五章 数组和广义表,线性表具有相同类型的数据元素的有限序列。,限制插入、删除位置,线性表具有相同类型的数据元素的有限序列。,限制元素类型为字符,串零个或多个字符组成的有限序列。,线性表具有相同类型的数据元素的有限序列。,将元素的类型进行扩充,4.2 数组,数组(array):是n(n=0)个相同数据类型的数据元素(a1,a2,a3,an)构成的有限线性序列。n为数组长度或数组大小。n=0为空数组。多维数组:一个m(m=2)维数组,其每个数据元素是一个m-1维的数组。且每个元素都对应于一组下标(j1,j2,jm),每个下标的取值范围是cijidi,di-ci+1称为第i维的长度(i=1,2,
2、n),m为数组的维数。,数组的特点:数组中各元素具有统一的类型;数组元素的下标一般具有固定的上界和下界。数组的基本操作比较简单,除了结构的初始化和销毁之外,只有存取元素和修改元素值的操作。数组有顺序存储和链式存储两种方式。,一维数组的特点:,1个下标,a2 是a3的直接前驱,a4是a3的直接后继。注:一维数组的顺序存储常称为向量。,一维数组存储结构与寻址 设一维数组的下标的范围为闭区间l,h,每个数组元素占用 c 个存储单元,则其任一元素 ai 的存储地址可由下式确定:Loc(ai)Loc(al)(il)c,二维数组的特点:,2个下标,每个元素ai,j受到两个关系(行关系和列关系)的约束:,一
3、个mn的二维数组可以看成是m行的一维数组,或者n列的一维数组。,例如,元素a22受两个线性关系的约束,在行上有一个行前驱a21和一个行后继a23,在列上有一个列前驱a12和和一个列后继a32。,a11 a12 a1n a21 a22 a2n am1 am2 amn,A=,二维数组是数据元素为一维数组(线性表)的线性表。,m维数组的特点:,m个下标,每个元素受到m个关系约束。,一个m维数组可以看成是由若干个m1维数组组成的线性表。,问题:计算机的存储结构是一维的,而数组一般是多维的,怎样存放?解决办法:事先约定按某种次序将数组元素排成一列序列,然后将这个线性序列存入存储器中。例如:在二维数组中,
4、我们既可以规定按行存储,也可以规定按列存储。,注意:若规定好了次序,则数组中任意一个元素的存放地址便有规律可寻,可形成地址计算公式;约定的次序不同,则计算元素地址的公式也有所不同;,常用的映射方法有两种:按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。,2、二维数组的存储结构与寻址,0,n-1,0,m-1,(a)二维数组,按行优先存储的寻址,数组大小:(m-1-0+1)*(n-1-0+1)=m*n;,设二维数组Amn的首地址A00为p,每个元素占L个存储单元。若已知aij是数组的第k个元素,则可
5、得:Loc(i,j)=p+k*L;目标:求aij是数组的第几个元素。,0,n-1,0,m-1,(a)二维数组,按行优先存储的寻址,aij前面的元素个数=阴影部分的面积=整行数每行元素个数+本行中aij前面的元素个数=(i-0)(n-1-01)(j-0),LOC(aij)=LOC(a00)+i*n+j*L,c2,b2,c1,b1,(a)二维数组,aij前面的元素个数=阴影部分的面积=整行数每行元素个数+本行中aij前面的元素个数=(i-c1)(b2-c21)(j-c2),通用按行优先存储的寻址公式:,数组大小:(b1-c1+1)*(b2-c2+1);,计算二维数组元素地址的通式设一般的二维数组是
6、Ac1.d1,c2.d2,这里c1,c2不一定是从0开始。每个元素占L个存储单位。,二维数组列优先存储的通式为:LOC(aij)=LOC(ac1,c2)+(j-c2)*(d1-c1+1)+i-c1*L数组的大小:(d1-c1+1)*(d2-c2+1),单个元素长度,aij之前的行数,数组基址,总列数,即第2维长度,aij本行前面的元素个数,则行优先存储时的地址公式为:LOC(aij)=LOC(ac1,c2)+(i-c1)*(d2-c2+1)+j-c2*L,例2、已知二维数组Am,m按行存储的元素地址公式是:Loc(aij)=Loc(a11)+(i-1)*m+(j-1)*K,按列存储的公式是?,
7、Loc(aij)=Loc(a11)+(j-1)*m+(i-1)*K(尽管是方阵,但公式仍不同),例1、一个二维数组A,行下标的范围是1到6,列下标的范围是0到7,每个数组元素用相邻的6个字节存储,存储器按字节编址。那么,这个数组的体积是 个字节。,288,例3、设数组a160,170的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a32,58的存储地址为。,8950,答:LOC(aij)=LOC(ac1,c2)+(j-c2)*(d1-c1+1)+i-c1)*L得:LOC(a32,58)=2048+(58-1)*(60-1+1)+32-1)*28950,答:Volume
8、=m*n*L=(6-1+1)*(7-0+1)*6=48*6=288,Loc(aijk)=Loc(a000)+(im2m3+jm3+k)L,若三维数组am1m2m3中,总共有m1*m2*m3个数组元素。求aijk存储地址。若按先页、再行后列。,多维数组的存储结构与寻址,链式存储顺序存储方式:按低地址优先(或高地址优先)顺序存入一维数组。(难点是多维数组与一维数组的地址映射关系),行指针向量,链式存储方式:用带行指针向量的单链表来表示。,矩阵类。,矩阵运算主要有矩阵加、矩阵减、矩阵乘、矩阵转置等。矩阵加(C=A+B)定义为 public class Matrix private int value
9、;,5.2 矩阵的压缩存储,讨论:1.矩阵是很多科学与工程计算问题中研究的数学对象.如何存储矩阵中的元素,使对矩阵的各种操作更方便、效率更高。2.在实际问题中,常遇到一些矩阵,其元素有许多值相同或大量元素值为零。如何节省空间。,.什么是压缩存储?多个值相同的元素,只分配一个元素值的存储空间,且零元素不占存储空间。.所有二维数组(矩阵)都能压缩吗?未必,要看矩阵是否具备以上压缩条件。.什么样的矩阵具备以上压缩条件?一些特殊矩阵(如:对称矩阵,三角矩阵,对角矩阵)和稀疏矩阵等。,.什么叫特殊矩阵?若值相同的元素或者零元素在矩阵中的分布有一定规律,则该类矩阵称为特殊矩阵。.什么叫稀疏矩阵?(重点)若
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 数据结构 第五 数组 广义
链接地址:https://www.31ppt.com/p-5436108.html