谁能教我这个数据结构题?

来源:百度知道 编辑:UC知道 时间:2024/04/19 01:46:49
编写一个完整的程序,实现稀疏矩阵三元组的存储及其转置矩阵的算法设计.在主函数程序中,调用转置函数,并输出原矩阵函数和转置后的矩阵函数.要求:
1.编写一个主函数,实现稀疏矩阵的三元组存储.
2.编写一个转置函数,实现矩阵的转置.
3.编写一个输出矩阵函数
4.在主函数中调用转置函数和输出函数.

#define MAXSIZE 1000 /*非零元素的个数最多为1000*/
#define ElementType int
/*稀疏矩阵三元组表的类型定义*/
typedef struct
{
int row,col; /*该非零元素的行下标和列下标*/
ElementType e; /*该非零元素的值*/
}Triple;

typedef struct
{
Triple data[MAXSIZE+1]; /* 非零元素的三元组表。data[0]未用*/
int m,n,len; /*矩阵的行数、列数和非零元素的个数*/
}TSMatrix;

/*矩阵转置的经典算法*/

/*"列序"递增转置法*/

void TransposeTSMatrix(TSMatrix A,TSMatrix *B)
{ /*把矩阵A转置到B所指向的矩阵中去。矩阵用三元组表表示*/
int i,j,k;
B->m=A.n;
B->n=A.m;
B->len=A.len;
if(B->len>0)
{
j=1;/*j为辅助计数器,记录转置后的三元组在三元组表B中的下标值*/
for(k=1; k<=A.n; k++) /*扫描三元组表A 共k次,每次寻找列值为k的三元组进行转置*/
for(i=1; i<=A.len; i++)
if(A.data[i].col==k)
{
B->data[j].row=A.data[i].col;/*从头至尾扫描三元组表A,寻找col值为k的三元组进行转置*/
B->data[j].col=A.data[i].row;
B->data[j].e=A.data[i].e;
j++;/*计数器j自加,指向下一个存放转置后三元组的下标*/
}/*内循环中if的结束*/<