肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 稀疏矩阵转置 java代码_三元组稀疏矩阵的快速转置

稀疏矩阵转置 java代码_三元组稀疏矩阵的快速转置

时间:2020-12-27 07:36:19

相关推荐

小问题却整了这么久,能力有待加强,要强烈区分三元组的列数与元素总数,

不能将他俩写混了

#include

#define MAXSIZE 1250

#define OK 1

#define ERROR 0

#define TRUE 1

#define FLASE 0

typedef int Status;

typedef int ElemType;

typedef struct{

int i, j; //该非零元的行下标和列下标

ElemType e; //非零元对应的值

}Triple;

typedef struct{

Triple data[MAXSIZE+1]; //非零元三元组表,data[0]未用

int mu, nu, tu; //矩阵的行数,列数,非零元个数

}TSMatrix;

Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T) //快速转置

{ //采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵T

T.mu=M.nu;

T.nu=M.mu;

T.tu=M.tu;

if(T.tu)

{

int col;

int num[100], cpot[100];

for(col=1;col<=M.nu;++col)

num[col]=0; //num数组的初始化

for(int t=1;t<=M.tu;++t)

++num[M.data[t].j]; //求M中每一列含有的非零元个数

cpot[1]=1;

for(col=2;col<=M.nu;++col)

cpot[col]=cpot[col-1]+num[col-1]; //求cpot向量

int q;

for(int 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];

}//for

}//if

return OK;

}//FastTransposeSMatrix

Status main()

{

TSMatrix M;

TSMatrix T;

printf("请输入原矩阵:\n");

printf("行数、列数: ");

scanf("%d%d", &M.mu, &M.nu);

printf("元素总数: ");

scanf("%d",&M.tu);

printf("输入各个对应压缩值:\n");

for(int i=1;i<=M.tu;++i)

scanf("%d%d%d", &M.data[i].i, &M.data[i].j, &M.data[i].e);

FastTransposeSMatrix(M, T);

printf("转置后行数、列数、元素总数非别为:\n%d %d %d\n\n", T.mu, T.nu, T.tu);

printf("值为:\n");

for(int t=1;t<=T.tu;++t)

printf("%d %d %d\n", T.data[t].i, T.data[t].j, T.data[t].e);

return OK;

}//main

如果觉得《稀疏矩阵转置 java代码_三元组稀疏矩阵的快速转置》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。