矩阵转置问题
#include<stdio.h>typedef int status;
typedef struct
{
int i,j;
int e;
}Triple;
typedef struct
{
Triple data[100];
int mu,nu,tu;
}TSM;
status INPUT_MAT(TSM *M)//输入
{
int i,j,e,n;
n=1;
printf("请输入矩阵的行,列\n");
scanf("%d%d",&M->mu,&M->nu);
printf("请输入矩阵的非零元,按行·列·数据的顺序。当i=0时结束\n");
scanf("%d%d%d",&i,&j,&e);
if(i>M->mu ||j>M->nu)return 0;
while(i!=0)
{
M->data[n].i=i;
M->data[n].j=j;
M->data[n].e=e;
n++;
scanf("%d%d%d",&i,&j,&e);
if(i>M->mu ||j>M->nu)return 0;
}
M->tu=n-1;
return 0;
}
status OUTPUT_MAT(TSM *M)//输出
{
int i,j,n;
n=1;
for(i=1;i<=M->mu;i++)
{
for(j=1;j<=M->nu;j++)
if(M->data[n].i==i && M->data[n].j==j)
{
printf("%d ",M->data[n].e);
n++;
}
printf("\n");
}
return 0;
}
status Transpose(TSM *M,TSM *T)//转置
{
int i,j,n,m=1;
n=1;
printf("转置前的矩阵\n");
OUTPUT_MAT(M);
T->mu=M->nu;
T->nu=M->mu;
T->tu=M->tu;
for(j=1;j<=M->nu;j++)
{
while(n<=M->tu)
{
if(M->data[n].j==j)
{
T->data[m].i=M->data[n].j;
T->data[m].j=M->data[n].i;
T->data[m].e=M->data[n].e;
m++;
n++;
}
else n++;
}
n=1;
}
printf("转置后的矩阵\n");
OUTPUT_MAT(T);
return 0;
}
/*status ADD(int m ,int w,TSM *Q)//加法
{
//TSM P,*Q;
int i,j,n=1;
int a[100][100],b[100][100],c[100][100];
//Q=&P;
for(i=0;i<m;i++)
{
for(j=0;j<w;j++)
{
scanf("%d%d",&a[i][j],&b[i][j]);
c[i][j]=a[i][j]+b[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<w;j++)
{
if(c[i][j]!=0)
{
Q->data[n].i=i;
Q->data[n].j=j;
Q->data[n].e=c[i][j];
n++;
}
}
}
OUTPUT_MAT(Q);
return 0;
}*/
void main()
{
TSM A,B,P,*Q,*M,*T;
M=&A;
T=&B;
Q=&P;
printf("矩阵的输入");
INPUT_MAT(M);
printf("你创建的矩阵为\n");
OUTPUT_MAT(M);
printf("矩阵的转置\n");
Transpose(M,T);
}
这个代码中的矩阵转置函数怎么实现不了?