三对角矩阵的存储和获取(C++版)

三对角矩阵的存储和获取(C++版)_第1张图片

三对角矩阵如上图,红框部分是我们在数组中存储的部分。

三对角的特点:|行标i-列标j|<=1的位置上才会有非零元素。其余位置都是0元素

三对角矩阵矩阵下标和数组下标的映射关系是:     2*i+j-3

代码实现及结果测试:

#include
#include
 
#define N 6    //N为对称矩阵的阶数 

/*
	三对角矩阵需要的数组大小是 3*N-2 
	三对角矩阵的特点:  |行标i-列标j|<=1的位置上才会有非零元素。 
	三对角矩阵矩阵下标和数组下标的映射关系是: 2*i+j-3 

*/
void storageValue(int array[] , int i, int j , int e){
	//只存储三对角矩阵元素 
	array[2*i+j-3] = e;
} 
//对称矩阵中元素的获取   ij是矩阵元素的下标 
int getValue(int array[],int i,int j) {
	if(abs(i-j)<=1){
		return array[2*i+j-3];
	}else{
	    return 0;	
	}
} 

int main(int argc, char *argv[])
{
	//用二维数组模拟一个对称矩阵.  
	int matrix[N][N] = {
		{1,2,0,0,0,0},
		{3,4,5,0,0,0},
		{0,6,7,8,0,0},
		{0,0,9,10,11,0},
		{0,0,0,12,13,14},
		{0,0,0,0,15,16},
	};
	int *array =(int *)malloc(sizeof(int)*(3*N-2));
	 
	for(int i = 0;i

三对角矩阵的存储和获取(C++版)_第2张图片

 

你可能感兴趣的:(数据结构与算法,数据结构)