




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#includeusing namespace std;const int DafaultSize=100;struct Tritupleint row,col;double value;Trituple& operator = (Trituple& x)row=x.row;col=x.col;value=x.value;return *this;class SparseMatrixfriend ostream& operator(istream& in,SparseMatrix& M);private:int Rows,Cols,Terms;Trituple *smArray;int maxTerms;public:SparseMatrix(int maxSz=DafaultSize);SparseMatrix(SparseMatrix& x);SparseMatrix()deletesmArray;SparseMatrix& operator = (SparseMatrix& x);SparseMatrix Transpose();SparseMatrix FastTranspose();SparseMatrix Add(SparseMatrix& b);SparseMatrix Multiply(SparseMatrix& b);SparseMatrix:SparseMatrix(int maxSz):maxTerms(maxSz)if(maxSz1)cerr矩阵初始化错误!endl;exit(1);smArray=new TrituplemaxSz;if(smArray=NULL)cerr储存分配错误!endl;exit(1);Rows=Cols=Terms=0;SparseMatrix:SparseMatrix(SparseMatrix& x)Rows=x.Rows;Cols=x.Cols;Terms=x.Terms;maxTerms=x.maxTerms;smArray=new TrituplemaxTerms;if(smArray=NULL)cerr存储分配错误!endl;exit(1);for(int i=0;iTerms;i+)smArrayi = x.smArrayi;ostream& operator(ostream& out,SparseMatrix& M)outrows = M.Rowsendl;outcols = M.Colsendl;outNonzero terms = M.Termsendl;for(int i=0;iM.Terms;i+)outMM.smArrayi.rowM.smArrayi.col=M.smArrayi.value(istream& in,SparseMatrix& M)cout请输入稀疏矩阵的行数,列数及项数!M.RowsM.ColsM.Terms;if(M.TermsM.maxTerms)cerr项数太多!endl;exit(1);for(int i=0;iM.Terms;i+)cout请输入项的行数,列数及其值:i+1M.smArrayi.rowM.smArrayi.colM.smArrayi.value;return in;SparseMatrix SparseMatrix:Transpose()SparseMatrix b(maxTerms);b.Cols=Rows;b.Rows=Cols;b.Terms=Terms;if(Terms0)int k,i,CurrentB=0;for(k=0;kCols;k+)for(i=0;i0)int i,j;for(i=0;iCols;i+) rowSizei=0;for(i=0;iTerms;i+) rowSizesmArrayi.col+;rowStart0=0;for(i=1;iCols;i+)rowStarti=rowStarti-1+rowStarti-1;for(i=0;iTerms;i+)j=rowStartsmArrayi.col;b.smArrayj.row=smArrayi.col;b.smArrayj.col=smArrayi.row;b.smArrayj.value=smArrayi.value;rowStartsmArrayi.col+;delete rowSize;delete rowStart;return b;SparseMatrix SparseMatrix:Add(SparseMatrix& b)SparseMatrix result(b);if(Rows!=b.Rows|Cols!=b.Cols)cerr两?矩?阵规?格?不?同?!?endl;return result;int i=0,j=0,index_a,index_b;result.Terms=0;while(iTerms&jindex_b)result.smArrayresult.Terms=b.smArrayj;j+;else if(index_aindex_b)result.smArrayresult.Terms=smArrayi;i+;elseresult.smArrayresult.Terms=smArrayi;result.smArrayresult.Terms.value=smArrayi.value+b.smArrayj.value;if(result.smArrayresult.Terms.value=0)result.Terms-;i+,j+;result.Terms+;SparseMatrix SparseMatrix:Multiply(SparseMatrix& b)SparseMatrix result(*this);if(Rows!=b.Cols)cerrA的列数不等于的行数,不可相乘!endl;return result;if(Terms=maxTerms|b.Terms=maxTerms)cerr空间不足!endl;return result;int *rowSize=new intb.Rows;int *rowStart=new intb.Rows+1;double *temp=new doubleb.Cols;int i,Current,lastInResult,RowA,ColA,ColB;for(i=0;ib.Rows;i+)rowSizei=0;for(i=0;ib.Terms;i+)rowSizeb.smArrayi.row+;rowStart0=0;for(i=1;i=b.Rows;i+)rowStarti=rowStarti-1+rowSizei-1;Current=0;lastInResult=-1;while(CurrentTerms)RowA=smArrayCurrent.row; /当前行的行号?for(i=0;ib.Cols;i+)tempi=0;while(CurrentTerms&smArrayCurrent.row=RowA)ColA=smArrayCurrent.col; /矩阵当前扫描到元素的列号for(i=rowStartColA;irowStartColA+1;i+)ColB=b.smAr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下沉市场消费金融风险管理策略与工具应用报告
- 2025年体检行业服务质量提升与行业竞争力提升策略报告
- 药品连锁企业管理制度
- 药品首付责任管理制度
- 药店召回追回管理制度
- 药店缺货补充管理制度
- 营业场所噪音管理制度
- 设备使用初期管理制度
- 设备基础资料管理制度
- 设备技术状况管理制度
- API RP 1175-2022 管道泄漏检查计划管理
- 2025年突发流行性传染性疾病应急演练方案及总结
- 安能快递加盟合同协议
- 2024年大学生就业力调研报告-智联招聘-202405
- 防静电地胶板施工工艺及技术方案、措施
- 缝纫车间安全培训课件
- 成人ICU患者外周动脉导管管理专家共识解读
- 电力设备预防性试验及维护合同
- 2025年各地低空经济政策汇编
- 搬运重物安全培训
- Unit 1 Section B 1a-2b 读写(2024新版)人教版七年级(下册)
评论
0/150
提交评论