資源簡介
稀疏矩陣的三元組程序,完全正確.稀疏矩陣的三元組存儲

代碼片段和文件信息
//?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
評論
共有 條評論