设A和B是稀疏矩阵,都以三元组作为存储结构,请写出矩阵相加的C++算法
时间: 2023-06-12 21:05:28 浏览: 97
稀疏矩阵运算器加法和减法运算(三元组)
5星 · 资源好评率100%
假设稀疏矩阵A、B的三元组表示分别为(A.row, A.col, A.val)和(B.row, B.col, B.val),其中row、col分别表示行和列的下标,val表示该元素的值。矩阵相加的C算法如下:
1. 初始化C为空稀疏矩阵,C.row = A.row = B.row,C.col = A.col = B.col。
2. 从i=1到A中非零元素的个数,分别遍历A.row[i]和A.col[i],找到对应的B中非零元素的位置,即B.row[j]和B.col[j]满足B.row[j]=A.row[i]且B.col[j]=A.col[i]。
3. 如果找到了对应位置的B中非零元素,那么将A.val[i]与B.val[j]相加得到C中对应位置的元素值C.val[k]=A.val[i]+B.val[j],并将其加入C的三元组表示中,即C.row[k]=A.row[i],C.col[k]=A.col[i]。
4. 如果没有找到对应位置的B中非零元素,那么将A中对应位置的元素值加入C的三元组表示中,即C.row[k]=A.row[i],C.col[k]=A.col[i],C.val[k]=A.val[i]。
5. 从i=1到B中非零元素的个数,分别遍历B.row[i]和B.col[i],如果对应位置的元素在A中已经被处理过,则不做处理,否则将其加入C的三元组表示中,即C.row[k]=B.row[i],C.col[k]=B.col[i],C.val[k]=B.val[i]。
6. 返回C稀疏矩阵。
阅读全文