将他看成一个矩阵,没有的地方补零,visual c++ 6.0 编译通过
#include"stdio.h"//方阵稀疏矩阵相加
#define MAXSIZE 100
void main()
{
int n,m,count_a,count_b,col,count_c=0,t1=0,t2=0,t=0,v;
printf("函数功能:实现两个稀疏矩阵A和B的相加,结果存放在稀疏矩阵C中\n");
printf("-------------------------------------------------------------\n");
typedef struct node
{
int i,j,e;//非零元的行列下标,值
}elem;
typedef struct
{
elem data[MAXSIZE];//三元组表
int mu,nu,tu;
}p;
p a,b,c;
printf("\n请输入矩阵行列数:");//输入数组的行列数
scanf("%d",&col);
printf("\n请输入a中非零元的个数:");//输入a中非零元个数
scanf("%d",&count_a);
printf("按照行,列,数据输入:\n");//输入a的数据
for(n=0;n
a.mu=col;
a.nu=col;
a.tu=count_a;
printf("\n请输入b中非零元的个数:");//输入b中非零元个数
scanf("%d",&count_b);
printf("按照行,列,数据输入:\n");//输入b的数据
for(m=0;m
b.mu=col;
b.nu=col;
b.tu=count_b;
printf("------------------a矩阵如下-----------------\n");//打印a数组
printf(" i j e \n");
for(n=0;n
printf("---------------------------------------------\n");
printf("\n\n------------------b矩阵如下-----------------\n");//打印b数组
printf(" i j e \n");
for(n=0;n
printf("----------------------------------------------------\n");
while(t1
if(a.data[t1].i==b.data[t2].i)
{
if(a.data[t1].j==b.data[t2].j)
{
v=a.data[t1].e+b.data[t2].e;
if(v!=0)
{
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=v;
t++;t1++;t2++;count_c++;
}
else
{
t1++;t2++;
}
}
else if(a.data[t1].j
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
else
{
c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
}
else if(a.data[t1].i
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
else
{
c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
}
while(t1
c.data[t].i=a.data[t1].i;
c.data[t].j=a.data[t1].j;
c.data[t].e=a.data[t1].e;
t++;t1++;count_c++;
}
while(t2
c.data[t].i=b.data[t2].i;
c.data[t].j=b.data[t2].j;
c.data[t].e=b.data[t2].e;
t++;t2++;count_c++;
}
printf("\n\n------------------c矩阵如下-----------------\n");//打印c数组
printf(" i j e \n");
for(n=0;n
printf("---------------------------------------------\n");
printf("-------------------------------------------------------------\n");
}
还真没有