回 帖 发 新 帖 刷新版面

主题:[原创]救命啊!!!!!

老师留的作业,该怎么办啊,明天就要交了!帮帮我吧[em10][em10]
我知道对各位大哥来说肯定小意思,我也自己看书了,可是只知道怎么声明,怎么实现不清楚!!

作业要求是:
1.用三元组或带辅助行指针的二元组或稀疏向量法建立稀疏矩阵类,实现矩阵转置函数,重载=,+,-,*运算符。 

回复列表 (共1个回复)

沙发

#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");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册