数据结构(c语言)将稀疏矩阵的三元组表示法以行列(矩阵)形式输出 (不要用二维数组..)
发布网友
发布时间:2022-04-22 22:25
我来回答
共1个回答
热心网友
时间:2023-10-05 14:21
#include <stdio.h>
#define maxsize 12500
#define elemtype int
typedef int status;
typedef struct
{
int i,j;
elemtype e;
}triple;
typedef struct
{
triple data[maxsize+1];
int mu,nu,tu;
}tsmatrix;
tsmatrix creatematrix()
{
tsmatrix M;
int n;
printf("输入矩阵的行数,列数,个数:\n");
scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
printf("输入非零元的值(行数、列数和值):\n");
for(n=0;n<M.tu;n++)
scanf("%d%d%d",&M.data[n].i,&M.data[n].j,&M.data[n].e);
return M;
}
tsmatrix transposesmtrix(tsmatrix M,tsmatrix T)
{
int q,col,p;
T.mu=M.nu; T.nu=M.mu; T.tu=M.tu;
if(T.tu)
{
q=0;
for(col=0;col<M.nu;col++)
for(p=0;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 T;
}
void print(tsmatrix M)
{
int x,y,n,k;
for(x=0;x<M.mu;x++)
{
for(y=0;y<M.nu;y++)
{
k=0;
for(n=0;n<M.tu;n++)
if((M.data[n].i==x)&&(M.data[n].j==y))
{
printf("%3d",M.data[n].e);
k=1;
}
if(k==0)
printf("%3d",k);
}
printf("\n");
}
}
void main()
{
tsmatrix M,T;
M=creatematrix();
printf("M矩阵为:\n");
print(M);
T=transposesmtrix(M,T);
printf("转置后的矩阵为:\n");
print(T);
}
这是我写的,有矩阵的输出 和矩阵的转置,希望对你有用!