稀疏矩阵c#--三元组表来压缩存储及转置 稀疏矩阵--三元组表来压缩存储及转置怎么写,我不会呀?注意:使用c#来进行编写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include<stdio.h> #define MAXSIZE 100//假设非零元的最大个数为100typedef struct _Triple{ int i,j;//该非零元的行下标和列下标 int e;}Triple;typedef struct{ Triple data[MAXSIZE +1] ;//非零元的三元组表,data[0]未用 int mu,nu,tu;//矩阵的行数,列数,非零元的个数}TSMatrix;int creatSMatrix(TSMatrix *M){//创建稀疏矩阵 int m,n,v,p; printf("请输入行数、列数、非零元个数:\n"); scanf("%d,%d,%d",&M->mu,&M->nu,&M->tu); p=1; while(p<=M->tu){ printf("请输入行数、列数、非零元值:\n"); scanf("%5d,%5d,%5d",&m,&n,&v); M->data[p].i=m; M->data[p].j=n; M->data[p].e=v; p++; } return 0;}void printSMatrix(TSMatrix M){//打印稀疏矩阵 int p,q,t=1;//p是行数, q是列数 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("%5d",M.data[t].e); t++; } else printf("%5d",0); } printf("\n");//打印完一行后记得转到下一行 } } void Transpose(TSMatrix M,TSMatrix * T){ //采用三元组表存储表示,求稀疏矩阵M的转置矩阵T int p,q,col; T->mu=M.nu; T->nu=M.mu; T->tu=M.tu; if(T->tu){ q=1; for(col=1;col<=M.nu;++col) for(p=1;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++; } }}void main(){ TSMatrix M; TSMatrix T; // M=(TSMatrix *)malloc(sizeof(TSMatrix));//T=(TSMatrix *)malloc(sizeof(TSMatrix)); creatSMatrix(&M); printSMatrix(M); printf("转置后矩阵为:\n"); Transpose(M,&T); printSMatrix(T);}我最近刚写的。。希望对你有帮助 对着楼上的C++,改称C#吧,或者直接建个C++动态链接库,贴上楼上的的代码,写个外部方法,在C#中引用外部方法。。 如何给构造函数有参数的 实体类 建实体数组? MessageBoxButtons.OK按钮默认为“确定” 怎样改为英文的ok DataSet 如何实现读取数据库中的多条记录 [编程题]实现文件名的简单智能排序 winform的tabindex问题 标识属性问题! 写Xml title属性设置????? 如何在form上显示一个日历啊? 问题:VS.Net2003 上要想把窗体及控件变成 XP 的可视风格 怎么设置aspx到html的映射????????? HBITMAP是什么意思? 网站被流量攻击,求软件。
#define MAXSIZE 100//假设非零元的最大个数为100
typedef struct _Triple{
int i,j;//该非零元的行下标和列下标
int e;
}Triple;typedef struct{
Triple data[MAXSIZE +1] ;//非零元的三元组表,data[0]未用
int mu,nu,tu;//矩阵的行数,列数,非零元的个数
}TSMatrix;int creatSMatrix(TSMatrix *M){//创建稀疏矩阵
int m,n,v,p;
printf("请输入行数、列数、非零元个数:\n");
scanf("%d,%d,%d",&M->mu,&M->nu,&M->tu);
p=1;
while(p<=M->tu){
printf("请输入行数、列数、非零元值:\n");
scanf("%5d,%5d,%5d",&m,&n,&v);
M->data[p].i=m;
M->data[p].j=n;
M->data[p].e=v;
p++;
}
return 0;
}void printSMatrix(TSMatrix M){//打印稀疏矩阵
int p,q,t=1;//p是行数, q是列数
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("%5d",M.data[t].e);
t++;
}
else
printf("%5d",0);
}
printf("\n");//打印完一行后记得转到下一行
}
} void Transpose(TSMatrix M,TSMatrix * T){
//采用三元组表存储表示,求稀疏矩阵M的转置矩阵T
int p,q,col;
T->mu=M.nu; T->nu=M.mu; T->tu=M.tu;
if(T->tu){
q=1;
for(col=1;col<=M.nu;++col)
for(p=1;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++; }
}
}
void main(){
TSMatrix M;
TSMatrix T;
// M=(TSMatrix *)malloc(sizeof(TSMatrix));
//T=(TSMatrix *)malloc(sizeof(TSMatrix));
creatSMatrix(&M);
printSMatrix(M);
printf("转置后矩阵为:\n");
Transpose(M,&T);
printSMatrix(T);}
我最近刚写的。。希望对你有帮助