C++稀疏距阵实现算法.

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:30:18
用文字描述,如何定义稀疏距阵(三元组方式存储),如何构造?如何输入?如何实现?
用文字描述,详细一点.本人加分30!

稀疏矩阵的三元组法
struct TriNode
{
int row, col;
ElemType data;
};
struct TriTable
{
TriNode *buffer;
int mu, nu, tu; // mu表示行数,nu表示列数,tu表示非零元个数
};

// 由指定的非压缩矩阵生成一个三元组表
int CreateTriTable(TriTable &T, Matrix M, int mu, int nu)
{
if (mu<=0 || nu<=0) return 0;
int tu=0;
for (int i=0; i<mu; i++)
for (int j=0; j<nu; j++)
if (M[i][j]!=0) tu++;
T.buffer = new ElemType[tu];
if (T.buffer==NULL) return 0;
int k=0;
for (int i=0; i<mu; i++)
for (int j=0; j<nu; j++)
if (M[i][j]!=0)
{
T.buffer[k].row = i;
T.buffer[k].col = j
T.buffer[k].data = M[i][j];
k++;
}
T.mu = mu;
T.nu = nu;
T.tu = tu;
return 1;
}

矩阵快速转置
行向量rpos的定义:
rpos[i]表示矩阵中i行的非零元在三元组表上的排列起点下标。
rpos[0]必为0。

int FastConv(T