稀疏矩陣:
m*n的矩陣,矩陣中有效值的個數
遠小於無效值的個數,且這些資料的分布沒有規律。
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
稀疏矩陣的壓縮儲存:
壓縮儲存值儲存極少數的有效資料。使用
三元組儲存每乙個有效資料,三元組按原矩陣中的位置,
以行優先順序先後順序依次存放。
矩陣的轉置:
將原矩陣的行、列對換,也就是將[i][j]和[j][i]位置上的資料對換。
1 0 3 0 5 1 0 0 2 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 ——————————> 3 0 0 4 0 0
2 0 4 0 6 0 0 0 0 0 0
0 0 0 0 0 5 0 0 6 0 0
0 0 0 0 0
#include using namespace std;
#include template struct trituple
;template class sparsematrix
sparsematrix(t *a, size_t m, size_t n, const t& invalid)
:_rowsize(m)
, _colsize(n)
, _invalid(invalid)
}} }
void display()
else
}cout << endl;
} cout << endl;
} sparsematrixtranspose()
index++;
}} return sp;
} sparsematrixfasttranspose()
rowstart[0] = 0;
for (int i = 1; i < _colsize; ++i)
// 借助rowstart定位轉置後壓縮儲存的位置
index = 0;
sp._array.resize(_array.size());
while (index < _array.size())
delete rowcounts;
delete rowstart;
return sp;
}private:
vector> _array;
size_t _rowsize;
size_t _colsize;
t _invalid;
};int main()
, ,
, ,
, ,
}; sparsematrixsp((int*)a, 6, 5, 0);
sp.display();
sparsematrixsp1 = sp.transpose();
sp1.display();
sparsematrixsp2 = sp.fasttranspose();
sp2.display();
return 0;
}
稀疏矩陣的壓縮儲存與轉置
稀疏矩陣的三元組表述法 型別結構 template struct triple template class sparsematrix 實現壓縮儲存 稀疏矩陣 template sparsematrix sparsematrix template sparsematrix sparsematrix ...
稀疏矩陣的壓縮儲存與轉置
眾所周知,稀疏矩陣的定義如下 設乙個m n的矩陣,矩陣中有效值的個數遠小於無效數的個數,且這些資料的分布沒有規律時,該矩陣是稀疏矩陣。稀疏矩陣的壓縮儲存儲存極少的有效資料,使用三元組儲存每乙個有效資料,三元組按原矩陣中的位置,以行優先順序一次存放。稀疏矩陣的轉置,即將原矩陣的行 列對換。詳細 如下 ...
稀疏矩陣的壓縮儲存及轉置
稀疏矩陣的壓縮儲存及轉置 include using namespace std 三元組順序表的型別定義 define itemsize 100 typedef struct int row,col int item thnode typedef struct thnode data data 0 ...