注册 登录
编程论坛 数据结构与算法

稀疏矩阵的转置问题

hdshdzh 发布于 2010-06-28 10:18, 562 次点击
B存放转置前,用三元组表示,C为转置后
void transpmatrix(spmatrix B,spmatrix C)
{
int i,j,t,m,n;
int x[100]       /*用来存放B中每一列非0元素个数*/
int y[100]                 /*存放C中每一行非0元素个数*/
m=B[0][0];n=B[0][1];t=B[0][2];
C[0][0]=n;C[0][1]=m;C[0][2]=t;
if(t>0)
{
for(i=0;i<n;i++) x[i]=0; /*初始化数组*/
for(i=1;i<=t;i++)
x[B[i][1]=x[B[i][1]]+1`;   /*统计B中每一列非0元素*/
/*求矩阵C中每一行非0元素三元组的起始位置*/
y[0]=1;
for(i=1;i<n;i++)
y[i]=y[i-1]+x[i-1];  
for(i=1;i<=t;i++)
{  /*将B中非0元素交换行号,列号后写入C中其最终的位置上*/
j=y[B[i][1]];      这个怎么解,它是怎样存放的,它的形式怎么样
C[j][0]=B[i][1];
C[j][1]=B[i][0];
C[j][2]=B[i][2];
y[B[i][1]]=j+1;      还有这个,不理解
}
}
}谁能帮我分析一下这个函数

[ 本帖最后由 hdshdzh 于 2010-6-29 19:04 编辑 ]
1 回复
#2
zglcx1232010-06-29 17:43
找我前几天发的帖
1