做类似起点的网站,广东的一起(17)做网站,商丘网站建设想象力网络,电子产品采购平台目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组
概述#xff1a;数… 目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组
概述数组是一个集合用于存放相同数据类型的元素
1. 特点一 数组中的每个数据元素具有相同的数据类型 2. 特点二 数据占用一段连续的内存空间
1.1、一维数组
1.1.1 、一维数组的定义方式
只能用数字字母和下划线命名且不能用数字作为开头注意数组名不要与其他变量名重复数组的下标从0开始。 一维数组的三种定义方式 第一种
//数据类型 数组名[数组长度];
int main(){int arr[10];//定义一个长度为10的数组数组元素为int型//使用数组下标对数组元素进行访问arr[0] 10;//数组第一个元素的下标为0arr[2] 20;arr[9] 20;//数组最后一个元素的下标为9对于长度为i的数组最后一位元素的下标即为i-1
}注意定义数组时若未给定数组元素的初始值则必须指定数组的长度否则提示错误因为编译时需要分配空间数组长度未知的话无法进行分配。 第二种
//数据类型 数组名[数组长度] {值1, 值2,...};
int main(){int arr[10] {1, 2, 3, 4};//未设定初始值的后6位元素默认为0
}注意 数组初始化时若大括号{}内的元素个数小雨定义的数组长度则剩余的数组元素默认为0。 第三种
//数据类型 数组名[] {值1, 值2, ...};
int main(){int arr[] {1,2,3,4,5,6,7,8,9,10};//数组长度为10
}注意 定义数组元素时数组可以不用指定数组长度数组长度由所定义元素的数量决定。
1.1.2、一维数组的数组名
作用一 统计数组所占用的内存空间、数组中单个数据元素所占用的内存空间、数组的长度如下
#includeiostream
using namespace std;int main(){int arr[10];cout数组arr用内存空间为sizeof(arr)endl;//40cout数组arr中单个元素占用内存空间为sizeof(arr[0])endl;//4cout数组长度为sizeof(arr)/sizeof(arr[0])endl;//10return 0;
}作用二 获取数组在内存中的地址如下
int main(){int arr[10];coutarrendl;//获取数组的首地址coutarr[0]endl;//获取数组的首地址coutarrendl;//获取整个数组的地址return 0;
}注意 arr/arr[0]和arr虽然数值相同但是含义不同数组名表示指针对程序做出如下变化
#includeiostreamusing namespace std;int main() {int arr[10];cout 数组长度为 sizeof(arr) endl;cout sizeof(arr[0]) endl;cout 首地址为arrendl;cout 地址为 arr1 endl;//与之前相差4cout 首地址为 arr[0] endl;cout 数组地址为 arr endl;cout 地址为 arr 1 endl;//与之前相差了40return 0;
}运行结果为 注意
数组名是常量不能进行赋值否则会报错
1.2、二维数组
1.2.1、二维数组的定义方式
二维数组有四种定义方式;
数据类型 数组名[行数][列数];数据类型 数组名[行数][列数] {数据1, 数据2, 数据3};数据类型 数组名[行数][列数] {{数据1, 数据2}, {数据3, 数据4},{数据5, 数据6}};数据类型 数组名[][列数] {数据1, 数据2, 数据3, 数据4}; 第3种定义方式最直观可以提高代码的可读性 第2种和第4种要根据二维数组的列数推断数组元素**可以省略行数不能省略列数** 定义二维数组时若已经初始化数据可以省略行数。 示例如下
#includeiostreamusing namespace std;int main() {int arr[][2] { {1,2},{4,5} };for (int i 0; i sizeof(arr) / sizeof(arr[0]); i) {for (int j 0; j sizeof(arr[i]) / sizeof(arr[i][0]);j) {cout arr[i][j] ;}cout endl;}return 0;
}运行结果为 注意cout时的格式
1.2.2、二维数组的数组名
二维数组名称的作用
1. 计算二维数组所占内存空间 cout 二维数组所占空间为 sizeof(arr) endl;cout 二维数组中第1行所占空间为 sizeof(arr[0]) endl;cout 二维数组中某个元素所占空间为 sizeof(arr[0][1]) endl;运行结果为
2. 计算二维数组的行数和列数
求行数sizeof(arr)/sizeof(arr[0]);//即数组元素总数/每一行的元素数
求列数sizeof(arr[0])/sizeof(arr[0][0])3. 获取二维数组中的相关地址
二维数组首地址arr[0]或者arr[0][0]
二维数组第一个元素的地址arr[0]或arr[0][0]
二维数组第一行的地址arr或arr[0]或arr0或*(arr0)
二维数组第i行的地址arr[i]或arr[0]i或*(arri)
二维数组第i行首元素的地址arr[i]或arri或arr[0]i或*(arri)
二维数组第i行第j列元素的地址arr[i][j]或*(arri)j4. 通过指针解引用访问或操作某元素*(*(arri)j)
二、对称矩阵的压缩存储
对称矩阵的矩阵压缩 若n阶方阵中任意一个元素都有则称该矩阵为对称矩阵对于对称矩阵只须存储对角线下三角区。若按照优先原则将各元素存入一维数组中即存入数组中那么数组共有个元素。对于k有
三、三角矩阵的压缩存储
下三角矩阵除了主对角线和下三角区其余的元素都相同上三角矩阵除了主对角线和上三角区其余的元素都相同。压缩存储策略按行优先原则将主对角线下三角区存入一维数组中并在最后一个位置存储常量即存入数组中那么数组共有个元素。对于k有
四、三对角矩阵的压缩存储
三对角矩阵又称为带状矩阵当时有。对于三角矩阵按行优先原则只存储带状部分即存入数组中那么k2ij - 3。若一直数组下标k则
五、稀疏矩阵的压缩存储
稀疏矩阵的非零元素远远少于矩阵元素的个数压缩存储策略
三元数组行, 列,值
i行j列v值134165223249356422
注意此处的行列下标从1开始。
十字链表