Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74165
  • 博文数量: 46
  • 博客积分: 560
  • 博客等级: 下士
  • 技术积分: 386
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-22 22:14
文章分类

全部博文(46)

文章存档

2013年(4)

2012年(42)

我的朋友

分类: C/C++

2012-05-07 09:13:54

#include
#define OK 1
#define SIZE 100
typedef struct {
int i,j;
int e;
}Triple;
typedef struct{
 Triple data[SIZE+1];
int mu,nu,tu;
}Tsmatrix;
int a,b;
int createTsmarix(Tsmatrix *M){
int m,n,p=1;
int c;
printf("please input the Tsmatrix :\n");
for(m=1;m<=a;m++)
for(n=1;n<=b;n++){
 scanf("%d",&c);
if(c!=0)
{
M->data[p].e=c;
M->data[p].i=m;
M->data[p].j=n;
p++;
}
}
M->tu=p;
M->mu=a;
M->nu=b;
return OK;
}
int FastTransposeSMatrix(Tsmatrix *M,Tsmatrix *T){
int  p,col,q,t,m;
int num[100];
int cpot[100];
T->mu=M->nu;
T->nu=M->mu;
T->tu=M->tu;
if(T->tu!=0){
for(col=1;col<=M->nu;col++)   num[col]=0;
for(t=1;t<=M->tu;t++) ++num[M->data[t].j];
cpot[1]=1;
for(col=2;col<=M->nu;col++)  cpot[col]=cpot[col-1]+num[col-1];
for(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];
}
}
return  OK;
}
void printTsmatrix(Tsmatrix *T){
int m,n,p=1;
int d;
for(m=1;m<=b;m++){
 printf("\n");
for(n=1;n<=a;n++){
if(T->data[p].i==m&&T->data[p].j==n)
{
  d=T->data[p].e;
p++;
}
else d=0;
printf("%4d",d);
}
printf("\n");
}
}
void main(){
 
 Tsmatrix *M,*T;
M=(Tsmatrix *)malloc(sizeof(Tsmatrix));
T=(Tsmatrix *)malloc(sizeof(Tsmatrix));
printf(" please input the tsmatrix's mu,nu\n");
scanf("%d%d",&a,&b);
createTsmarix(M);
printf("the tsmatrix is :\n");
printTsmatrix(M);
FastTransposeSMatrix(M,T);
printf("the tsmatrix after fasttranspose is:\n");
printTsmatrix(T);
getch();
}
阅读(934) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~