稀疏矩阵的压缩存储
2016-09-20 12:09
316 查看
“test.cpp”
<strong><span style="font-size:18px;">#include<iostream> using namespace std; #include<vector> template<class T> struct Triple { size_t _row; size_t _col; T _value; Triple(size_t row = 0,size_t col = 0,const T& value = T()) :_row(row) ,_col(col) ,_value(value) {} }; template<class T> class SparseMatrix { public: SparseMatrix(T* a,size_t m,size_t n,const T& invalid) :_m(m) ,_n(n) ,_invalid(invalid) { for(size_t i = 0;i < _m;i++) { for(size_t j = 0;j < _n;j++) { if(a[i*_n+j] != _invalid) { Triple<T> t(i,j,a[i*_n+j]); _matrix.push_back(t); } } } } void Display() { size_t index = 0; for(size_t i = 0;i < _m;i++) { for(size_t j = 0;j < _n;j++) { if(index < _matrix.size()\ && _matrix[index]._row == i\ && _matrix[index]._col == j) { cout<<_matrix[index]._value<<" "; index++; } else { cout<<_invalid<<" "; } } cout<<endl; } cout<<endl; } private: vector< Triple<T> > _matrix; size_t _m; size_t _n; T _invalid; }; void test() { int arr[6][5] = \ {\ {1,0,3,0,5},\ {0,0,0,0,0},\ {0,0,0,0,0},\ {2,0,4,0,6},\ {0,0,0,0,0},\ {0,0,0,0,0},\ }; SparseMatrix<int> s((int *)arr,6,5,0); s.Display(); } int main() { test(); return 0; }</span></strong>
相关文章推荐
- sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】
- 对称矩阵、稀疏矩阵的压缩存储
- 矩阵-----对称矩阵及其压缩存储&&稀疏矩阵
- 稀疏矩阵的压缩存储和快速逆置
- C++ 实现稀疏矩阵的压缩存储的实例
- 【代码】稀疏矩阵的压缩存储与转置算法
- 矩阵(稀疏矩阵)的压缩存储(一)
- C++ 数据结构之对称矩阵及稀疏矩阵的压缩存储
- 稀疏矩阵的压缩存储及其转置算法
- 矩阵(稀疏矩阵)的压缩存储
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
- 稀疏矩阵-压缩存储-列转置法- 一次定位快速转置法
- 矩阵(稀疏矩阵)的压缩存储(二)
- 数据结构学习笔记--稀疏矩阵的压缩存储
- 5.3矩阵的压缩存储(稀疏矩阵转置和快速转置)
- 基于C语言的稀疏矩阵的压缩存储和运算
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
- 稀疏矩阵的压缩存储
- 稀疏矩阵的压缩存储与快速转置 三元组法 类与对象实现
- 【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的(快速)转置