第五章数组字符串集合类
第五章 数组、字符串、集合类 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
您可能关注的文档
最近下载
- DB35_T 2198-2024 工业园区低零碳创建评估准则.docx VIP
- 医疗机构消防安全管理试题及答案.docx VIP
- 土地复垦项目规划设计方案.pdf VIP
- 跨学科的项目化学习:“4+1”课程实践手册.pptx VIP
- 2025年国际注册内部审计师(CIA)考试《内部审计基础》新版真题卷.docx VIP
- 半导体物理与器件PPT全套完整教学课件.pptx
- 《养老机构智慧运营与管理》教案 项目四 养老机构服务管理.docx VIP
- 地质勘察报告.docx VIP
- 房产赠与协议书范例(三篇).doc VIP
- 四川省2025年高职单招文化素质考试(普高类)信息技术和通用技术试卷(含答案).pdf
原创力文档

文档评论(0)