稀疏矩阵转置
求教为什么程序是结果错误,代码哪里有问题吗?
#include <stdio.h>
#include <stdlib.h>
#define MAX 400
typedef struct {
int i,j,e;
}Triple;
typedef struct{
Triple data[MAX];
int mu,nu,tu;
}TSMatrix;
void Trans(TSMatrix A,TSMatrix *B){
(*B).mu=A.nu;
(*B).nu=A.mu;
(*B).tu=A.tu;
if((*B).tu){int q=0,col,p;
for(col=1;col<=A.nu;col++){
for(p=0;p<A.tu;p++){
if(A.data[p].j==col){
(*B).data[q].i=A.data[p].j;
(*B).data[q].j=A.data[p].i;
(*B).data[q].e=A.data[p].e;
q++;
}
}
}
}
}
int main()
{
int i,j,e,t=0;
TSMatrix A,B;
scanf("%d %d",&A.mu,&A.nu);
scanf("%d %d %d",&i,&j,&e);
while(i&&j&&e){
A.data[t].i=i;
A.data[t].j=j;
A.data[t].e=e;
t++;
scanf("%d %d %d",&i,&j,&e);
}
A.tu=t;
Trans(A,&B);
for(t=0;t<B.tu;t++){
printf("%d %d %d\n",B.data[t].i,B.data[t].j,B.data[t].e);
}
return 0;
}