//RLSMatrix.cpp
#include"predefined.h"
#include"RLSMatrix.h"
Status MultSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix *Q)
//算法5.3:求矩阵乘积Q=M*N,采用行逻辑链接存储表示
{
int arow,tp,p,brow,t,q,ccol,i,ctemp[10];
if(M.nu!=N.mu)
return ERROR;
(*Q).mu=M.mu;
(*Q).nu=N.nu;
(*Q).tu=0;
if(M.tu*N.tu!=0)
{
for(arow=1;arow<=M.mu;arow++)
{
for(i=1;i<N.nu+1;i++)
ctemp[i]=0;
(*Q).rpos[arow]=(*Q).tu+1;
if(arow<M.mu)
tp=M.rpos[arow+1];
else
tp=M.tu+1;
for(p=M.rpos[arow];p<tp;p++)
{
brow=M.data[p].j;
if(brow<N.mu)
t=N.rpos[brow+1];
else
t=N.tu+1;
for(q=N.rpos[brow];q<t;q++)
{
ccol=N.data[q].j;
ctemp[ccol]+=M.data[p].e*N.data[q].e;
}
}
for(ccol=1;ccol<=(*Q).nu;ccol++)
{
i