| 当稀疏矩阵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 |
| 查看该用户更多文章>> |