有关稀疏矩阵的有关代码
#define M//稀疏矩阵的行数
#define N//稀疏矩阵的列数
#define MaxSize //稀疏矩阵中非0的元素最多的个数
typedef struct{
int r;//行号
int c;//列号
ElemType d;//元素值
}TupNode; //三元组类型
typedef struct
{
int rows; //行数
int cols; //列数
int nums; //非零元素个数
TupNode data[MaxSize];
} TSMatrix;
//创建三元组表示
void CreateMat(TSMatrix &t,ElemType A[M][N])
{
int i,j;
t.rows =M;
t.cols = N;
t.nums = 0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(A[i][j]!=0)
{
t.data[t.nums].r=i;t.data[t.nums].c = j;
t.data[t.nums].d = A[i][j];t.nums++;
}
}
//稀疏矩阵赋值
bool Value(TSMatrix &t,ELemType x,int i,int j)
{
int k=0;k1;
if(i>=t.rows || j>=t.cols)
return false;
while(k<t.nums&&i>t.data[k].r)
while(k<t.nums&&i==t.data[k].r&&j>t.data[k].c)
k++;
if(t.data[k].r==i&&t.data[k].c==j)
t.data[k].d = x;
else{
for(k1=t.nums-1;k1>=k;k1--)
{
t.data[k1+1].r = r.data[k1].r;
t.data[k1+1].c =t.data[k1].c;
t.data[k1+1].d = t.data[k1].d
}
t.data[k].r = i;
t.data[k].c = j;
t.data[k].d = x;
t.nums++;
}
return true;
}
//稀疏矩阵指定位置赋值给变量
bool Assign(TSMatrix t,ElemType &x,int i,int j)
{
int k = 0;
if(i>=t.rows||j>=t.cols)
return false;
while(k<t.nums&&i>data[k].r)k++;
while(k<t.nums&&i==t.data[k].r&&j>t.data[k].c)
k++;
if(t.data[k].r==i&&t.data[k].c==j)
x=t.data[k].d;
else
x=0;
return true;
}