样例输入】 6 7 0 12 9 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 0 0 14 0 0 0 24 0 0 0 0 0 18 0 0 0 0 0 15 0 0 -7 0 0 0 【样例输出】 0 0 -3 0 0 15 12 0 0 0 18 0 9 0 0 24 0 0 0 0 0 0 0 -7 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 【提示】 第二组测试数据行列较大,注意空间开大一点哦。*/ #include<stdio.h> #define MAXSIZE 5000 typedef struct{ int row,col;//行列下标 int e;//元素值 }Tripe; typedef struct{ Tripe data[MAXSIZE+1];//三元矩阵 int m,n,len;//矩阵行数,列数和非零元素个数 }TSMatrix; void FastTransposeTSMatrix(TSMatrix A,TSMatrix* B){ int col,t,p,q; int num[MAXSIZE],position[MAXSIZE]; B->m=A.n;B->n=A.m;B->len=A.len; if(B->len>0){ for(col=1;col<=A.n;col++) num[col]=0; for(t=1;t<=A.len;t++) num[A.data[t].col]++; position[1]=0; for(col=2;col<=A.n;col++) position[col]=position[col-1]+num[col-1]; } for(p=0;p<A.len;p++){ col=A.data[p].col; q=position[col]; B->data[q].row=A.data[p].col; B->data[q].col=A.data[p].row; B->data[q].e=A.data[p].e; position[col]++; } }帮我写主函数
时间: 2024-02-13 10:02:26 浏览: 48
CSM32RV20替代STM32F030国产32位RISC-V内核MUC单片机
很高兴回答你的问题,以下是主函数的代码:
```c
int main(){
TSMatrix A, B;
int m, n, len, i, j;
scanf("%d%d%d", &m, &n, &len); // 输入矩阵的行数、列数和非零元素个数
A.m = m;
A.n = n;
A.len = len;
for(i = 1; i <= len; i++){
scanf("%d%d%d", &A.data[i].row, &A.data[i].col, &A.data[i].e); // 输入每个非零元素的行、列、值
}
FastTransposeTSMatrix(A, &B); // 调用快速转置函数
for(i = 1; i <= B.len; i++){
printf("%d %d %d\n", B.data[i].row, B.data[i].col, B.data[i].e); // 输出转置后的矩阵
}
return 0;
}
```
希望能够帮到你,如果还有其他问题,欢迎继续提问!
阅读全文