求大神解答稀疏矩阵相乘的问题

请编写并测试一个稀疏矩阵相乘的函数

matrix sparse_matrix_mul(const matrix& m1, constmatrix& m2)

其中matrix为一个描述稀疏矩阵的结构体:

struct matrix

{

float* _elements; //矩阵中所有元素的数组(按列优先的顺序)

int* _colheads; //每列的开始元素在_elements数组中的id

int* _colids; //_elements中每个元素在对应列中的行号

int _rows; //行数

int _cols; //列数

};

例如矩阵

0 1 0

2 4 5

3 0 0

对应结构中各数组为

_elements:{2,3,1,4,5}

_colheads:{0,2,4}

_colids:{1,2,0,1,1}.

请提交一个完整的可编译的程序和测试数据。
提示:请尽可能优化代码的时空间效率,并处理异常情况。

http://wenku.baidu.com/link?url=M-jq3YcrOOIVHNnQE8EaxcMrScS64QSJbpxFmx0rW0XrTbVwZBycfy7fdYc7ZLjmInv-zxyfNaRLGkm8fVj9fFE8PKY6kAJczyT0stMEz5y