#include #include using namespace std;
templateclass sparsematrix
}} }
sparsematrix()
{} // 訪問稀疏矩陣中row行col中的元素
t& access(int row, int col)
// it++;
//}//return _invalid;
for (size_t i = 0; i < _sm.size(); ++i)
return _invalid;
} }// 還原稀疏矩陣
templatefriend ostream& operator<<(ostream& _cout, sparsematrix& s)//要申明為友元函式
// it++;
// }
//}//return sm;
//時間複雜度o(m*n)
for (size_t i = 0; i < _col; ++i)
++index;//此處要++index而不是index++}}
return sm;
} // 實現稀疏矩陣的快速逆置,並給出時間複雜度
sparsematrixfasttransprot()
//2、原矩陣的每一列在新矩陣中的起始位置
int* paddr = new int[_col];
memset(paddr, 0, _col*sizeof(paddr[0]));
for (int j = 1; j < _col; ++j)
//3、放置元素到新的空間
for (int i = 0; i < _sm.size(); ++i)
return sm;
} // // 實現稀疏矩陣的加法操作
//sparsematrixoperator+(const sparsematrix& sp);
//三元組
templatestruct trituple
trituple()//無引數建構函式
{}size_t _row;
size_t _col;
t _data;
};private:
vector> _sm;
size_t _row;
size_t _col;
t _invalid;
};void testsparsematrix()
, ,,,
,};
sparsematrixsp((int*)array, sizeof(array) / sizeof(array[0]), sizeof(array[0]) / sizeof(array[0][0]), 0);
cout << sp << endl;
cout << endl;
sparsematrixsp1 = sp.transprot();
cout << sp1 << endl;
sparsematrixsp2 = sp.fasttransprot();
cout << sp2 << endl;
}int main()
稀疏矩陣的壓縮儲存
稀疏矩陣的壓縮儲存 實現稀疏矩陣壓縮儲存,並實現矩陣轉置和求和。輸入矩陣時,首先需要輸入非零元素的個數,然後分別輸入矩陣的 行號,列號和值。輸完2個矩陣後,自動進行計算第乙個矩陣的轉置以及兩個矩陣的和。例如 輸入如下 100 90 5 矩陣的行數為100,列數為90,共5個非零元素。1 10 100...
對稱矩陣 稀疏矩陣的壓縮儲存
對稱矩陣 稀疏矩陣的壓縮儲存 1 對稱矩陣的壓縮儲存 對稱矩陣顧名思義就是符合行和列的個數相同,並且矩陣中儲存的資料上三角和下三角中對應位置上的元素值是相等的。為了能夠減少儲存的空間,我們可以只儲存上三角矩陣 或者下三角矩陣中的元素,這樣就能夠極大地節省空間的浪費。下面是對稱矩陣的示列 假設對稱矩陣...
陣列的壓縮儲存(特殊矩陣 稀疏矩陣)
其實這裡就不應該說是陣列了,而應該是說行列式,對稱矩陣 a i j a j i 上下三角行列式 對角線以下 以上的元素均為0 帶狀行列式 這個可能不太好理解,舉乙個例子 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 這時看對角線比較舒服,可以看出...