
如何用c语言实现两个一维矩阵相乘?谢谢!要用2维数组。。。。
展开全部
你用的VC吗?我随便给你个算法吧!!~SeqSparseMatrix& SeqSparseMatrix::operator*=(SeqSparseMatrix &mat) //当前矩阵与mat矩阵相加,归并算法
{
if (this->rows!=mat.rows && this->columns!=mat.columns)
throw "两个矩阵阶数不同,不能相乘";
int i=0, j=0;
while (i<list.length() && j<mat.list.length())
{ //将mat的各三元组依次插入到当前矩阵三元组顺序表
Element item = this->list.get(i);
Element elem = mat.list.get(j);
if (elem.row==item.row && elem.column==item.column)
{
item.value *= elem.value;
list.set(i, item);
i++;
j++;
}
else if (item.row<elem.row || item.row==elem.row && item.column<elem.column)
i++;
else
{
this->list.insert(i, elem); //将item插入为list的第i个元素
i++;
j++;
}
}
while (j<mat.list.length()) //将mat中剩余三元组依次插入当前矩阵三元组顺序表
this->list.insert(i++, mat.list.get(j++));
return *this;
}
{
if (this->rows!=mat.rows && this->columns!=mat.columns)
throw "两个矩阵阶数不同,不能相乘";
int i=0, j=0;
while (i<list.length() && j<mat.list.length())
{ //将mat的各三元组依次插入到当前矩阵三元组顺序表
Element item = this->list.get(i);
Element elem = mat.list.get(j);
if (elem.row==item.row && elem.column==item.column)
{
item.value *= elem.value;
list.set(i, item);
i++;
j++;
}
else if (item.row<elem.row || item.row==elem.row && item.column<elem.column)
i++;
else
{
this->list.insert(i, elem); //将item插入为list的第i个元素
i++;
j++;
}
}
while (j<mat.list.length()) //将mat中剩余三元组依次插入当前矩阵三元组顺序表
this->list.insert(i++, mat.list.get(j++));
return *this;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询