第五章数组字符串集合类.ppt

第五章数组字符串集合类

第五章 数组、字符串、集合类 5.1 数组 ● 数组:是具有一定顺序关系的若干对象的集合 体,组成数组的对象成为该数组的元素。 [例] 向量、矩阵等。 a11 a12 a13 a21 a22 a23 a31 a32 a33 数组名:表示群体的共性(具有同一种数据类型) 下标:表示个体的个性(各自占有独立的单元) 5.1.1 顺序存储的数组 ● n维数组:每个元素有 n 个下标的数组称为 n 维数组。 [例] int a[10]; float b[3][4]; int c[5][6][4]; /*三维数组*/ ● 数组的存储 ① 数组元素在内存中是顺序、连续存储的; ② 数组的存储分配按行(列)进行; ③ 数组名字表示该数组的首元素地址,是常量。 1、一维数组 对于一维数组而言,各元素按下标次序依次存放, 如a[0],a[1],a[2],…等等。且有: a[0]: a[1]: a[2]: 数组中任一元素A[i]的地址可表示为: Loc(a[i]) = Loc(a[0]) +i*C C为每个元素占用存储空间的字节数。 2、二维数组 按行存放 [例] int x[2][3]/*它有2×3个数组元素*/ x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] 其存储分配顺序为: x[0][0]-x[0][1]-x[0][2]-x[1][0]-x[1][1]-x[1][2] x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] C中的二维数组可以看作是一种特殊的一维数组。 [例] float a[3][4]; a[0] a[0][0] a[0][1] a[0][2] a[0][3] a- a[1] a[1][0] a[1][1] a[1][2] a[1][3] a[2] a[2][0] a[2][1] a[2][2] a[2][3] 二维数组元素a[i][j]的地址可以这样得到: Loc(a [i][j]) = Loc(a[i]) +j*C Loc(a[i]) = Loc(a[0]) + i*C’ // C’=n*C Loc(a[i][j]) = Loc(a[0][0]) + i*n*C+j*C = Loc(a[0][0]) + (i*n+j)*C [例] Loc(a[1][2]) = a+(i*n+j)C =a+(1*4+2)*4 = a+24 3、三维数组 多维数组元素在内存中的排序顺序为:第一维的下标变化最慢,最右边的下标变化最快。 [例] float a[2][3][4]; 5.1.2 稀疏矩阵 ◆ 定义:设矩阵 Amn中非零元素的个数远远小 于零元素的个数,则称 A 为稀疏矩阵。 ◆ 特点:零元素的分布一般没有规律。 1 三元组表 三元组结点 稀疏矩阵类的声明 template class T // 三元组的结点类 class Trituple { firend class SparseMatrix; private: int row,col; T value; }; template class T // 稀疏矩阵类的声明 class SparseMatrix { private: int Rows,Cols,Count; // 存储三元组表的数组 Trituple T smArray[MaxTerm]; public: SparseMatrix( int Mrows,int Mcols); // 建立一个稀疏矩阵 SparseMatrix T Transpose( ); // 求转置矩阵 SparseMatrix T Add(SparseMatrix T b); // 求矩阵的和 SparseMatrix T Multiply(Spars

文档评论(0)

1亿VIP精品文档

相关文档