稀疏矩阵普通转置
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 1250
typedef int ElemType;
typedef struct{
int i,j;
ElemType e;
}Triple;
typedef struct{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
TSMatrix CreateSMatrix(TSMatrix &M){
int k;
printf("请你输入数组行数 列数 非零元素个数:");
scanf("%d %d %d", &M.mu, &M.nu, &M.tu);
printf("请你输入行下标 列下标 元素数值:\n");
for (k = 1; k <= M.tu; k++){
scanf("%d %d %d", &M.data[k].i, &M.data[k].j, &M.data[k].e);
}
return M;
}
void PrintTriple(TSMatrix M){
for (int i = 1; i <= M.tu; i++)
{
printf("%-2d %-2d %-2d\n", M.data[i].i, M.data[i].j, M.data[i].e);
}
}
int TransposeSMatrix(TSMatrix &M,TSMatrix &T){
T.mu =M.nu ;T.nu=M.mu;T.tu=M.tu;
if(T.tu ){
int q=1;
for(int col=1;col<=M.nu;++col)
for(int p=1;p<=M.tu;++p)
if(M.data[p].j==col){
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
++q;
}
}
return 1;
}
int main(){
TSMatrix T,M;
CreateSMatrix(T);
printf("转之前的矩阵为:\n");
PrintTriple(T);
TransposeSMatrix(T,M);
printf("转置后的矩阵为:\n");
PrintTriple(M);
}