对于普通的矩阵我们在此不讨论,主要讨论稀疏的存储和转化问题。
首先对于稀疏矩阵的存储,如果像普通的矩阵那样存储,则会造成空间的巨大的浪费。所以我们只存储那些非0的元素,这时就必须指明每一个非零元素的具的体的位置。,定义一个类来表示每一个非零元素。
# include <iostream>
using namespace std;
class MatrixTerm //存储每一个非零元素
{
friend class SpareMatri
private:
int row;//元素所在行
int col;//元素所在列
int value;//元素的值
}
class SpareMatri
{
private:
int row;
int col;
int terms;//个数
int capacity;
MatrixTerm *smArray;// 非零元素数组
public:
transpose();
SpareMatri(int row, int col,int term);
}
SpareMatri SpareMatri::transpose()
{
SpareMatri b (row,col,term);
if(terms>0)
{
int currentB=0;
for(int c=0; c<col;c++)
{
for(int i=0;i<term;i++)
{
if(smArray[i].col==c)
{
b.smArray[currentB].row=c;
b.smArray[currentB].col=smArray[i].row;
b.smArray[currentB++].value=smArray[i].value;
}
}
}
}
return b;
}