资源简介
稀疏矩阵的三元组程序,完全正确.稀疏矩阵的三元组存储
代码片段和文件信息
// SparseMatrix.cpp
#include “SparseMatrix.h“
#ifndef SPARSEMATRIX_CPP
#define SPARSEMATRIX_CPP
template
SparseMatrix::SparseMatrix(int muint nuint tuTriple data[])
{ if(tu>MaxSize ) throw “空间不够“;
m_Mu = mu; m_Nu = nu; m_Tu = tu;
for(int i=0; i m_Data[i] = data[i];
}
// 矩阵转置算法
template
SparseMatrix &SparseMatrix::Trans()
{ SparseMatrix *B=new SparseMatrix;
B->m_Mu=m_Nu; B->m_Nu=m_Mu; B->m_Tu=m_Tu;
for(int k=0col=0; col for(int i=0; i if(m_Data[i].col==col)
{ B->m_Data[k].row =m_Data[i].col;
B->m_Data[k].col =m_Data[i].row;
B->m_Data[k].value=m_Data[i].value;
k++;
}
return *B;
}
// 快速矩阵转置算法
template
SparseMatrix &SparseMatrix::QuickTrans()
{ SparseMatrix *B=new SparseMatrix;
B->m_Mu=m_Nu; B->m_Nu=m_Mu; B->m_Tu=m_Tu;
int *num=new int[m_Nu];
//统计当前对象中每列的三元组个数
for(int i=0; i for(i=0; i //计算pos数组
int *pos=new int[m_Nu];
for(pos[0]=0i=1; i pos[i]=pos[i-1]+num[i-1];
//快速转置
for(i=0; i { int col=m_Data[i].col; int loc=pos[col];
B->m_Data[loc].row =m_Data[i].col;
B->m_Data[loc].col =m_Data[i].row;
B->m_Data[loc].value=m_Data[i].value;
pos[col]++;
}
delete []num; delete []pos;
return *B;
}
#endif
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1556 2008-03-26 21:59 2稀疏矩阵之三元组\SparseMatrix.cpp
文件 875 2008-03-26 21:59 2稀疏矩阵之三元组\SparseMatrix.h
文件 352 2008-03-26 21:03 2稀疏矩阵之三元组\Test.cpp
文件 3513 2008-03-26 11:32 2稀疏矩阵之三元组\Test.dsp
文件 533 2008-03-26 11:32 2稀疏矩阵之三元组\Test.dsw
文件 66560 2008-04-28 09:40 2稀疏矩阵之三元组\Test.ncb
文件 53760 2008-04-28 09:40 2稀疏矩阵之三元组\Test.opt
文件 1427 2008-03-26 21:59 2稀疏矩阵之三元组\Test.plg
目录 0 2008-04-28 11:39 2稀疏矩阵之三元组
----------- --------- ---------- ----- ----
128576 9
评论
共有 条评论