|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<stdlib.h>
#define SMAX 1024
typedef int datatype;
typedef struct
{
int i,j;
datatype v;
}SPNode;
typedef struct
{
int mu,nu,tu;
SPNode data[SMAX];
} SPMatrix;
void InitMatrix(SPMatrix *A)
{
A->mu=0;
A->nu=0;
A->tu=0;
}
void TransMatrix(SPMatrix *A,SPMatrix *B)
{
int p,q,col;
B->mu=A->nu;
B->nu=A->mu;
B->tu=A->tu;
if(B->tu>0)
{
q=0;
for(col=0;col<=A->nu;col++)
for(p=0;p<=A->tu;p++)
if(A->data[p].j==col)
{
B->data[q].i=A->data[p].j;
B->data[q].j=A->data[p].i;
B->data[q].v=A->data[p].v;
q++;
}
}
}
void disp(int M[][6],int size)
{
int i,j;
for(i=0;i<size;i++)
{
for(j=0;j<6;j++)
printf("%4d",M[i][j]);
printf("\n");
}
}
void disp3(SPMatrix *A,int size)
{
int i;
printf("%4d%4d%4d\n",A->mu,A->nu,A->tu);
for(i=0;i<size;i++)
printf("%4d%4d%4d\n",A->data[i].i,A->data[i].j,A->data[i].v);
}
void InputMatrix(SPMatrix *A,int M[][6],int m,int n,int size)
{
int i,j,k=0;
A->mu=m;
A->nu=n;
for(i=0;i<size;i++)
{
for(j=0;j<6;j++)
{
if(M[i][j]!=0)
{
A->data[k].i=i;
A->data[k].j=j;
A->data[k].v=M[i][j];
k++;
}
}
}
A->tu=k;
}
int main()
{
SPMatrix *SA,*SB;
int Matrix[6][6]={{3},{0,6,0,0,1,7},{0,0,2},{0},{0,0,0,0,50},{0,0,0,0,0,9}};
disp(Matrix,6);
SA=(SPMatrix*)malloc(sizeof(SPMatrix));
SB=(SPMatrix*)malloc(sizeof(SPMatrix));
InitMatrix(SA);
InitMatrix(SB);
InputMatrix(SA,Matrix,6,6,6);
printf("稀疏矩阵三元组:\n");
disp3(SA,7);
TransMatrix(SA,SB);
printf("稀疏矩阵转置后:\n");
disp3(SB,7);
}
这个是错误的 帮忙看看怎么改{void TransMatrix(SPMatrix *A,SPMatrix *B) }
|
|