说明
如果在矩阵中,多数的元素并没有资料,称此矩阵为稀疏矩阵(sparse matrix ), 由于矩阵在程式中常使用二维阵列表示,二维阵列的大小与使用的记忆体空间成正比,如果多数的元素没有资料 , 则会造成记忆体空间的浪费 , 为 此 , 必须设计稀疏矩阵的阵列储存方式 , 利用较少的记忆体空间储存完整的矩阵资讯。
C
#include<stdio.h>
#include<stdlib.h>
int main()
{
//原矩阵
/* 0 0 0 0 0 0
0 3 0 0 0 0
0 0 0 6 0 0
0 0 9 0 0 0
0 0 0 0 12 0
三十个数*/
//第一行代表的是,原矩阵中的行,列,以及非零元素的个数,如下:5行6列4个非零元素
//(从第二行开始)第一列代表非零元素在原矩阵中的横坐标,第二列代表非零元素在原矩阵中的纵坐标,
//第三列代表改位置的存储值,如:1,1,3代表原矩阵中的第一行第一列的值3.
//这样就能用15个元素来带代表原矩阵中的30个元素
int num[5][3] = { 5,6,4,
1,1,3,
2,3,6,
3,2,9,
4,4,12 };
printf("稀疏矩阵\n");
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%4d", num[i][j]);
}
printf("\n");
}
printf("还原矩阵\n");
int k = 1;
for (int i = 0; i < num[0][0]; i++)
{
for (int j = 0; j < num[0][1]; j++)
{
if (i == num[k][0] && j == num[k][1])
{
printf("%4d", num[k][2]);
k++;
}
else
printf("%4d", 0);
}
printf("\n");
}
system("pause");
return 0;
}