作者在 2008-04-15 10:29:33 发布以下内容
创建稀疏矩阵相应三元组的算法如下所示:
#define MAXSIZE 1000 /*假设非零元个数的最大值是1000*/
typedef struct
{
int i, j;
elemtype v;
}triple;
typedef struct
{
triple data[MAXSIZE+1]; /*data[0]用于存放稀疏矩阵行,列和非零元个数*/
int mu, nu, tu; /*稀疏矩阵行、列和非零元的个数*/
} spmatrix;
spmatrix a;
void CreatTripleTable (int array_a[M][N],spmatrix a)
/*array_a是一个稀疏矩阵,a是产生的相对应的三元组存储*/
{
int i,j,k=1;
for (i=0;i<M;i++) /*按行优先顺序扫描array_a的元素,不为0者存入B中*/
for (j=0;j<N;j++)
if (array_a[i][j]!=0)
{
a.data[k].i=i;
a.data[k].j=j;
a.data[k].v = array_a[i][j];
k++;
}
a.data[0][0]=M;
a.data[0][1]=N;
a.data[0][2]=k-1;/*存入非0元素个数*/
}/*CreatTripleTable*/