如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
会计学数组数组的定义(dìngyì)和初始化一维数组存储(cúnchǔ)方式类似于线性表,一个二维数组的逻辑结构可形式地表示为:2_Array=(D,R)其中D={aij(i=0,1,…,m-1,j=0,1,…,n-1)},aij是同类型数据元素的集合。R={ROW,COL}是数据元素上关系的集合。ROW={<aij,ai(j+1)>|0<=i<=m-1,0<=j<=n-2}每一行(yīxíng)上的列关系。COL={<aij,a(i+1)j>|0<=i<=m-2,0<=j<=n-1}每一列上的行关系。三维数组n维数组二维数组三维数组特殊矩阵的压缩(yāsuō)存储对称(duìchèn)矩阵的压缩存储为节约存储空间,只存对角线及对角线以上的元素,或者只存对角线及对角线以下的元素。前者称为上三角矩阵,后者称为下三角矩阵。把它们按行存放于一个(yīɡè)一维数组B中,称之为对称矩阵A的压缩存储方式。数组B共有n+(n-1)++1=n*(n+1)/2个元素。上三角(sānjiǎo)矩阵若i<j,数组元素A[i][j]在矩阵的上三角部分,在数组B中没有存放,可以找它的对称元素A[j][i]:=j*(j+1)/2+i若已知某矩阵元素位于数组B的第k个位置,可寻找(xúnzhǎo)满足i(i+1)/2k<(i+1)*(i+2)/2的i,此即为该元素的行号。j=k-i*(i+1)/2此即为该元素的列号。例,当k=8,3*4/2=6k<4*5/2=10,取i=3。则j=8-3*4/2=2。若ij,数组元素A[i][j]在数组B中的存放位置为n+(n-1)+(n-2)++(n-i+1)+j-i==(2*n-i+1)*i/2+j-i==(2*n-i-1)*i/2+j若i>j,数组元素A[i][j]在矩阵的下三角部分,在数组B中没有存放。因此(yīncǐ),找它的对称元素A[j][i]。A[j][i]在数组B的第(2*n-j-1)*j/2+i的位置中找到。三对角矩阵(jǔzhèn)的压缩存储三对角矩阵中除主对角线及在主对角线上下最临近的两条对角线上的元素外,所有其它元素均为0。总共有3n-2个非零元素。将三对角矩阵A中三条对角线上的元素按行存放(cúnfàng)在一维数组B中,且a00存放(cúnfàng)于B[0]。在三条对角线上的元素aij满足0in-1,i-1ji+1在一维数组B中A[i][j]在第i行,它前面有3*i-1个非零元素,在本行中第j列前面有j-i+1个,所以元素A[i][j]在B中位置为k=2*i+j。若已知三对角矩阵中某元素(yuánsù)A[i][j]在数组B[]存放于第k个位置,则有i=(k+1)/3j=k-2*i例如,当k=8时,i=(8+1)/3=3,j=8-2*3=2当k=10时,i=(10+1)/3=3,j=10-2*3=4稀疏(xīshū)矩阵(SparseMatrix)稀疏矩阵(jǔzhèn)的抽象数据类型(三元组顺序表)#defineMAXSIZE12500typedefstruct{inti,j;//非零元素行号/列号ElemTypee;//非零元素的值}Triple;//三元组typedefunion{Tripledata[MAXSIZE+1];intmu,nu,tu;//矩阵(jǔzhèn)行数、列数、非零元个数}TSMatrix;//稀疏矩阵(jǔzhèn)类定义用三元组表表示的稀疏矩阵(jǔzhèn)及其转置稀疏矩阵转置算法(suànfǎ)思想方法一:按照M(m*n)的列序来进行转置设矩阵列数为nu,对矩阵三元组表扫描nu次。第k次检测列号为k的项。第k次扫描找寻所有列号为k的项,将其行号(xínɡhào)变列号、列号变行号(xínɡhào),顺次存于转置矩阵三元组表。稀疏矩阵的转置(zhuǎnzhì)StatusTransposeSMatrix(TSMatrixM,TSMatrix&T){T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;//转置(zhuǎnzhì)矩阵的列数,行数和非零元素个数if(T.tu){q=1;//矩阵T的指针for(col=1;col<=M.nu;++col)for(p=1;p<=M.tu;++p)//矩阵M的指针if(M.data[p].j==col){T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;T.data[q].e=M.data[p].e;++q;}}returnO