数据结构:写矩阵的转置的程序时出现了了点小问题。。。

这是我在写矩阵的转置的时候 ,出现的一种类型的小问题,应该是挺简单的一个问题 。但是我不知道怎么改 哪位大神可以帮忙看
一看 谢谢~~~~~图片说明图片说明#include
#include

#define maxsize 100
typedef int elemtype;
typedef struct
{
int i,j;
elemtype e;
}triple;
typedef struct
{
triple data[maxsize+1];
int mu,nu,tu;
}tsmatrix;
void createsmatrix(tsmatrix *M)//创建稀疏矩阵
{
int i,m,n;
elemtype e;
int k,j;
printf("请输入矩阵的行数 列数 非零元个数");
scanf("%d %d %d",&M->mu,&M->nu,&M->tu);
M->data[0].i=0;//为以下比较顺序做准备
for(i=1;i<=M->tu;i++)
{
j=0;
do{
j++;
if(j>3){
printf("本次输入失败!");
exit(-1);

        } 
        printf("按行序输入第%d个非零元素所在的行(1~%d)列(1~%d)值:",i,M->mu,M->nu);
        scanf("%d %d %d",&m,&n,&e);
        k=0;
        if(m<1||m>M->mu||n<1||n>M->nu) //行和列超过范围 
        k=1;
        if(m<M->data[i-1].i||m==M->data[i-1].i&&n<=M->data[i-1].j)  k=1;//行或列的顺序有错

    }while(k);
    M->data[i].i=m;
    M->data[i].j=n;
    M->data[i].e=e;

 } 
 printf("\n");

}
void destorysmatrix(tsmatrix *M)//销毁稀疏矩阵
{
M->mu=0;
M->nu=0;
M->tu=0;
}
void printsmatrix(tsmatrix M)
{
int i;
printf("稀疏矩阵对应的三元组表为:\n\n");
printf("行 列 元素值\n\n");
for(i=1;i<=M.tu;i++)
printf("%2d%4d%8d\n",M.data[i].i,M.data[i].j,M.data[i].e);
printf("\n\n");
}
void transposematrix(tsmatrix *M,tsmatrix *T)
{
int p,q,col;
T->mu=M->mu;
T->nu=M->nu;
T->tu=M->tu;
if(T->tu)
{
q=1;
for(col=1;col<=M->nu;++col)//按列序求转置
for(p=1;ptu;++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;
}
}
}
int main()
{
tsmatrix A,B;
printf("创建矩阵A:\n");
createsmatrix(A);
printsmatrix(A);
printf("求A的转置矩阵B:\n");
transposesmatrix(A,B);
printsmatrix(B);
destorysmatrix(A);
destorysmatrix(B);
return 0;
}

很明显的错误,你定义的是 struct tsmatrix结构体,而你的creatematrix函数的参数是是tsmatrix.

就像楼上说的,creatematrix函数的形参是指针,调用的地方确不是用的指针,你直接传实体,createsmatrix(&A)