#include <stdio.h> 
#define N 10
typedef  struct
{
  int i,j;
  int e;
}tsMatrix;
typedef struct
{
  tsMatrix data[N];
  int mu,nu,tu;
}TSMatrix;

int FastTransposeSMatrix(TSMatrix M,TSMatrix *T)
{
    int col,p,q,t;     
    int num[N],cpot[N];

    T->mu=M.nu;
    T->nu=M.mu;
 T->tu=M.tu;
    if(T->tu)
      {
   for(col=1;col<=M.nu;++col) 
    num[col]=0;
   for(t=1;t<=M.tu;++t) 
    ++num[M.data[t].j];
   cpot[1]=1;
   for(col=2;col<=M.nu;++col)
   cpot[col]=cpot[col-1]+num[col-1];
   for(p=1;p<=M.tu;++p)
   {
    col=M.data[p].j;q=cpot[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;
    ++cpot[col];
   }
  }
}
void printM(TSMatrix *M)
{
   int p,q;int t=1;
   for(p=1;p<=M->mu;p++)
   {
   for(q=1;q<=M->nu;q++)
   {
     if(M->data[t].i==p&&M->data[t].j==q)
     {
      printf("%d   ",M->data[t].e);t++;
     }
     else printf("0   ");
   }
   printf(" ");
   } 
   printf(" ");
}

void main()
{
 TSMatrix  A,T;int k;
 printf("请输入矩阵的行数");
 scanf("%d",&A.mu);
 printf("矩阵的列数:");
 scanf("%d",&A.nu);
 printf("矩阵的非零元个数:");
 scanf("%d",&A.tu);
 for(k=1;k<=A.tu;k++)
 {
  printf("请输入第 %d 非零元: ",k);
  printf("它所在的行位置:");
  scanf("%d",&A.data[k].i);
  printf("它所在的列位置:");
  scanf("%d",&A.data[k].j);
  printf("它的值:");scanf("%d",&A.data[k].e);
 }
 printf(" 原矩阵: ");
 printM(&A);
 FastTransposeSMatrix(A,&T);
 printf("转置后的矩阵: ");
 printM(&T);
}
[em8][em8][em8][em8]我快要挂死了