当稀疏矩阵A和B均以三元组表作为存储结构时,试写出矩阵相加的算法,其结果存放在三元组表C中
作者/cherryqi 时间/2006-8-3 16:05:00 类别/数据结构 查看/
 发表评论 以论坛方式查看
标签:数据结构
void AddTriTuple( TriTupleTable *A, TriTupleTable *B, TriTupleTable *C) 
{ //三元组表表示的矩阵A,B相加 
int p,q,k,l; C->m=A->m;//矩阵行数
 C->n=A->n;//矩阵列数 
C->t=0; //三元组表长度 
C->data[C->t].v=0; //三元组元素初值
 k=0; l=0; for(p=0;pm;p++) //行 
for(q=0;qn;q++) //列 
if(A->data[k].I==p&&A->data[k].j==q)
 { //如果该元素在A表中有 
C->data[C->t].v=0;//初始化三元组值 
C->data[C->t].I=p; 
C->data[C->t].j=q; 
C->data[C->t].v+=A->data[k].v; 
if(B->data[l].I==p&&B->data[l].j==q) 
{ //同时在B中也有 
C->data[C->t].v+=B->data[l].v; l++; //指向B表下一元素 } 
k++;C->t++;//指向A表下一元素,C表长增1 

else if(B->data[l].I==p&&B->data[l].j==q) 
{ //若A中无,而B中有该元素 
C->data[C->t].v=0;//初始化三元组值
C->data[C->t].I=p; 
C->data[C->t].j=q; 
C->data[C->t].v+=B->data[l].v; 
l++;C->t++;//指向B表下一元素,C表长增1 }//if..else为一个语句 }//end
查看该用户更多文章>>