#include<>#defineMaxSize1000/*用户自定义*/typedefintDataType;/*用户自定义*/typedefstruct{inti,j;DataTypev;}Triple;/*定义三元组结构*/typedefstruct{Tripledata[MaxSize];/*定义可存三元组大小*/intmu,nu,tu;}Tsmatrix;/*行数,列数,非零元*/voidaddtriple(Tsmatrix*A,Tsmatrix*B,Tsmatrix*C)/*三元组相加算法*/{intx,sum,pb,pc,pa;C->mu=A->mu;C->nu=A->nu;C->tu=0;/*定义矩阵C的非零元个数开始为0个*/pa=1;pb=1;pc=1;for(x=1;x<=A->mu;x++){while(A->data[pa].i<x)pa++;while(B->data[pb].i<x)pb++;while(A->data[pa].i==x&&B->data[pb].i==x)/*行数相等时*/{if(A->data[pa].j==B->data[pb].j)/*列数相等时*/{sum=A->data[pa].v+B->data[pb].v;/*矩阵想加*/if(sum)/*相加不为零时*/{C->data[pc].i=x;C->data[pc].j=A->data[pa].j;C->data[pc].v=sum;pa++;pb++;pc++;}}elseif(A->data[pa].j>B->data[pb].j)/*A的列数大于B的列数时*/{C->data[pc].i=x;C->data[pc].j=B->data[pb].j;C->data[pc].v=B->data[pb].v;pb++;pc++;}else{C->data[pc].i=x;C->data[pc].j=A->data[pa].j;C->data[pc].v=A->data[pa].v;pa++;pc++;}}while(A->data[pa].i==x)/*插入A剩余的元素*/{C->data[pc].i=x;C->data[pc].j=A->data[pa].j;C->data[pc].v=A->data[pa].v;pa++;pc++;}while(B->data[pb].i==x)/*插入B的元素*/{C->data[pc].i=x;C->data[pc].j=B->data[pb].j;C->data[pc].v=B->data[pb].v;pb++;pc++;}}C->tu=pc;}main(){Tsmatrix*A,*B,*C;intb,e,k;A=(Tsmatrix*)malloc(sizeof(Tsmatrix));B=(Tsmatrix*)malloc(sizeof(Tsmatrix));C=(Tsmatrix*)malloc(sizeof(Tsmatrix));/*生成A、B、C三元组存储空间*/printf("inputA->mu:");/*输入A的
矩阵相加 来自淘豆网m.daumloan.com转载请标明出处.