主题:[原创]救命啊!!!!!
ch198614
[专家分:0] 发布于 2006-03-29 17:53:00
老师留的作业,该怎么办啊,明天就要交了!帮帮我吧[em10][em10]
我知道对各位大哥来说肯定小意思,我也自己看书了,可是只知道怎么声明,怎么实现不清楚!!
作业要求是:
1.用三元组或带辅助行指针的二元组或稀疏向量法建立稀疏矩阵类,实现矩阵转置函数,重载=,+,-,*运算符。
回复列表 (共1个回复)
沙发
冰封星云 [专家分:2260] 发布于 2006-03-30 22:57:00
#include <malloc.h>
#include <stdio.h>
#define maxlen 40
#define datatype1 int
typedef struct
{int i,j;
datatype1 v;
}node;
typedef struct
{int m,n,t;
node data[maxlen];
}spmatrix;
spmatrix transpose(spmatrix a)
{int p,q,col;
spmatrix b;
b.m=a.n; b.n=a.m; b.t=a.t;
if(a.t!=0)
{q=1;
for(col=1;col<=a.n;col++)
for(p=1;p<=a.t;p++)
if(a.data[p].j==col)
{b.data[q].j=a.data[p].i;
b.data[q].i=a.data[p].j;
b.data[q].v=a.data[p].v;
q++;}}
return b;
}
void printmatrix(spmatrix c)
{ int n,i;
n=c.t;
for(i=1;i<=n;i++)
printf("[%d]行号=%d列号=%d元素值=%d\n",i,c.data[i].j,c.data[i].v);
}
main()
{spmatrix a;
spmatrix b;
int i,j,r,c,t,n;
n=1;
printf("\n\n输入矩阵行数:");
scanf("%d",&r);
printf("\n\n输入矩阵列数:");
scanf("%d",&c);
a.m=r;a.n=c;
printf("\n\n");
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{printf("输入元素[%d,%d]值:",i+1,j+1);
scanf("%d",&t);
if(t!=0){a.data[n].i=i+1;
a.data[n].j=j+1;a.data[n].v=t;n=n+1;}
}
n=n-1;a.t=n;
printf("\n\n稀疏矩阵三元组表示:\n\n");
printmatrix(a);
b=transpose(a);
printf("\n\n转置后稀疏矩阵三元组表示:\n\n");
printmatrix(b);
printf("\n\n");
}
我来回复