template <typename T>
TSMatrix<T> TSMatrix<T>:: operator*(TSMatrix<T> s){
if(colNum != s.rowNum) return *this;
int total = colNum*s.rowNum;
Triple* tmp = new Triple[total];
int ptr = 0;
for(int i = 0; i < totalNum; ++i){
int mi1 = data[i].i, mj1 = data[i].j, me1 = data[i].e;
for(int j = 0; j < s.totalNum; ++j){
int mi2 = s.data[j].i, mj2 = s.data[j].j, me2 = s.data[j].e;
int mi = -1, mj = -1, me = -1;
if(mj1 == mi2){
me = me1*me2; mi = mi1; mj = mj2;
}
if(mi == -1 && mj == -1) continue;
bool flag = true;
for(int k = 0; k < ptr; ++k)
if(tmp[k].i == mi && tmp[k].j == mj){
tmp[k].e += me;
flag = false;
}
if(flag){
tmp[ptr].i = mi; tmp[ptr].j = mj; tmp[ptr].e = me;
ptr++;
}
}
}
delete []data;
totalNum = total;
colNum = s.colNum;
data = tmp;
return *this;
}
数据结构C++实验之稀疏矩阵乘法
最新推荐文章于 2024-03-30 17:33:26 发布