在完成稀疏矩陣的實現時,主要遇到了兩個問題:
複製建構函式傳引數一般應該為const引用型別,否則在sparsematrixb(a.transpose())等情況下會出問題,過載賦值符號時也一樣,引數應設為const引用型別。(似乎和左右值有關?待深入研究)
在轉置函式和快速轉置函式中,陣列元素三元組中的行和列都是我們輸入的值,是從1開始的,而在陣列中是從0開始的,這一點要千萬注意。
1、sparsematrix.h
#ifndef sparsematrix_h
#define sparsematrix_h
#include using std::ostream;
using std::istream;
const int defaultsize = 100;
template struct trituple
};template class sparsematrix
sparsematrix& operator=(const sparsematrix& x);
sparsematrixtranspose();
sparsematrixfasttranspose();
//sparsematrixadd(sparsematrix& b);
//sparsematrixmultiply(sparsematrix& b);
template friend ostream& operator<<(ostream& out, sparsematrix& m);
template friend istream& operator>>(istream& in, sparsematrix& m);
};#endif /* sparsematrix_h */
2、sparsematrix.cpp
#include #include "sparsematrix.h"
using std::endl;
using std::cerr;
using std::cout;
template sparsematrix::sparsematrix(int maxsz) : maxterms(maxsz)
smarray = new trituple[maxsz];
if(smarray == null)
rows = cols = terms = 0;
}template sparsematrix::sparsematrix(const sparsematrix& x)
for(int i = 0; i < terms; i++)
smarray[i] = x.smarray[i];
}template sparsematrix& sparsematrix::operator=(const sparsematrix& x)
template ostream& operator<<(ostream& out, sparsematrix& m)
template istream& operator>>(istream& in, sparsematrix& m)
for(int i = 0; i < m.terms; i++)
return in;
}//稀疏矩陣轉置演算法
template sparsematrixsparsematrix::transpose()
}return b;
}//稀疏矩陣快速轉置演算法
template sparsematrixsparsematrix::fasttranspose()
}delete rowstart;
delete rowsize;
return b;
}
3、main.cpp
#include #include "sparsematrix.cpp"
using std::cin;
int main()
C 稀疏矩陣轉置
問題描述 稀疏矩陣轉置 設計思路 稀疏矩陣中存在大量非零元素,直接轉置執行時間較高。因而採用三元組表示。按照壓縮的概念,只儲存稀疏矩陣中的非零元素,除了儲存非零元素的值之外,還必須同時記下它所在的行列位置。三元組表示法是用乙個具有三個資料域的一維陣列表示稀疏矩陣,每一行有三個字段,分別該元素的行下表...
稀疏矩陣的轉置(矩陣轉置和快速轉置)
實現矩陣的轉置 1.將矩陣的行列值相互轉換。2.將每個三元組中的i和j交換。3.重排三元組之間的次序便可實現矩陣的轉置。void transposesmatrix tsmatrix m,tsmatrix t return transposesmatrix快速轉置的原理是 如果能預先確定矩陣m中每一列...
稀疏矩陣儲存 轉置 乘法運算
使用順序儲存結構儲存稀疏矩陣,並實現轉置和乘法運算。include stdio.h include stdlib.h include string.h 順序結構的稀疏矩陣 轉置 乘法 define xishu max 100 define xishu increment 100 typedef st...