稀疏矩陣的壓縮儲存與轉置

2021-07-28 19:05:27 字數 1097 閱讀 4676

眾所周知,稀疏矩陣的定義如下:設乙個m*n的矩陣,矩陣中有效值的個數遠小於無效數的個數,且這些資料的分布沒有規律時,該矩陣是稀疏矩陣。

稀疏矩陣的壓縮儲存儲存極少的有效資料,使用三元組儲存每乙個有效資料,三元組按原矩陣中的位置,以行優先順序一次存放。

稀疏矩陣的轉置,即將原矩陣的行、列對換。

詳細**如下:

template struct triple

triple()

{}};

template class sparsematrix

}} }

sparsematrix()

{} void display()

else

}cout++index;

}} return sm;

} sparsematrixfasttransport() //快速轉置

//統計轉置後每一行(即轉置前每一列)第乙個資料的起始位置

start[0] = 0;

for(size_t i=1; i<_n; ++i)

//快速定位

index = 0;

while(index < _matrix.size())

return sm;

}protected:

vector> _matrix;

size_t _m;

size_t _n;

t _invalid;

};

測試用例如下:

void testsparsematrix()

, ,

, ,

, }; sparsematrixsm((int *)matric, 6, 5, 0);

sm.display();

sm.transport().display();

sm.fasttransport().display();

}

值得一提的是,在進行轉置的時候,需要重寫sparsematrix的建構函式;在進行快速轉置的時候,需要重寫sparsematrix和triple的建構函式,否則程式會報錯,告訴你沒有合適的建構函式,切記切記!!!

稀疏矩陣的壓縮儲存與轉置

稀疏矩陣 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 稀疏矩陣的壓縮儲存 壓縮儲存值儲存極少數的有效資料。使用 三元組儲存每乙個有效資料,三元組...

稀疏矩陣的壓縮儲存與轉置

稀疏矩陣的三元組表述法 型別結構 template struct triple template class sparsematrix 實現壓縮儲存 稀疏矩陣 template sparsematrix sparsematrix template sparsematrix sparsematrix ...

稀疏矩陣的壓縮儲存及轉置

稀疏矩陣的壓縮儲存及轉置 include using namespace std 三元組順序表的型別定義 define itemsize 100 typedef struct int row,col int item thnode typedef struct thnode data data 0 ...