当前位置:编程学习 > C#/ASP.NET >>

稀疏矩阵c#--三元组表来压缩存储及转置

稀疏矩阵--三元组表来压缩存储及转置怎么写,我不会呀?
注意:
使用c#来进行编写 --------------------编程问答-------------------- --------------------编程问答-------------------- #include<stdio.h>  
     
#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);

}
我最近刚写的。。希望对你有帮助 --------------------编程问答-------------------- 对着楼上的C++,改称C#吧,或者直接建个C++动态链接库,贴上楼上的的代码,写个外部方法,在C#中引用外部方法。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,