




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include using namespace std;template/三元组struct Tritupleint row;int col;T val;/稀疏矩阵声明templateclass SparseMatrixpublic:SparseMatrix(int maxt=100);SparseMatrix();bool TransposeTo(SparseMatrix &);bool AddTo(const SparseMatrix&);bool TransposeTo_Faster(SparseMatrix&);void Input();void Output();private:Trituple* data;int rows,cols,terms;int maxterms;templateSparseMatrix:SparseMatrix(int maxt)maxterms=maxt;data=new Trituplemaxterms;terms=rows=cols=0;templateSparseMatrix:SparseMatrix()if (data!=NULL)delete data;/普通转置templatebool SparseMatrix:TransposeTo(SparseMatrix &B)if (termsB.maxterms)return false;B.rows=cols;B.cols=rows;B.terms=terms;if (terms0)int p=0;for (int j=1;j=cols;j+)for (int k=0;kterms;k+)if (datak.col=j)B.datap.row=j;B.datap.col=datak.row;B.datap.val=datak.val;p+;return true;/快速转置templatebool SparseMatrix:TransposeTo_Faster(SparseMatrix& B)if (termsB.maxterms)return false;B.rows=cols;B.cols=rows;B.terms=terms;if (terms0)int *num,*cpot;num=new intcols;cpot=new intcols;for (int j=0;jcols;j+)numj=0;for (int k=0;kterms;k+)numdatak.col-1+;/求出B中每一行的起始下标cpotcpot0=0;for (int j=1;jcols;j+)cpotj=cpotj-1+numj-1;/执行转置操作for (int p,k=0;kterms;k+)p=cpotdatak.col-1+;B.datap.row=datak.col;B.datap.col=datak.row;B.datap.val=datak.val;delete num;delete cpot;return true;templatevoid SparseMatrix:Input()coutrow1;coutcol1;coutinput row1*col1 matrixendl;int number;rows=row1;cols=col1;for (int i=0;irows;i+)for (int j=0;jnumber;if (number!=0)dataterms.row=i+1;dataterms.col=j+1;dataterms.val=number;terms+;template /输出好看,但是违背了最初的原则void SparseMatrix:Output()T *tempArray=new T*rows;for (int i1=0;i1rows;i1+)tempArrayi1=new intcols;for (int j=0;jrows;j+)for (int k=0;kcols;k+)tempArrayjk=0;for (int i=0;iterms;i+)tempArraydatai.row-1datai.col-1=datai.val;for (int j=0;jrows;j+)for (int k=0;kcols;k+)coutsetw(4)tempArrayjk;coutendl;for (int l=0;lrows;l+)delete tempArrayl;delete tempArray;coutendl;templatebool SparseMatrix:AddTo(const SparseMatrix& B)if (rows!=B.rows|cols!=B.cols)return false;bool flag=false;int tempTerms=terms;for (int i=0;iB.terms;i+)flag=false;for (int j=0;jtempTerms;j+)if (dataj.col=B.datai.col&dataj.row=B.datai.row)dataj.val+=B.datai.val;flag=true;if (flag=false)data+terms-1.col=B.datai.col; /数组下标操作注意事项dataterms-1.row=B.datai.row;dataterms-1.val=B.datai.val;return true;int main()cout此程序演示稀疏矩阵的普通转置和快速转置操作endl;SparseMatrix sm(50);SparseMatrix sm1(50);SparseMatrix sm2(50);sm.Input();coutsm isendl;sm.Output();sm.TransposeTo(sm1);coutTransposition of sm is endl;sm1.Output();sm.TransposeTo_Faster(sm2);coutTransposition of sm is endl;sm2.Output();SparseMatrix sm3;coutinput a new matrixendl;sm3.Input();coutsm3 isendl;sm3.Output
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册消防工程师考试冲刺试卷 消防安全技术专项训练
- 2025年Python分布式系统开发培训试卷 深度解析
- 2025年注册水利工程师考试押题试卷 水利工程设计规范专项训练
- 星城镇党代会工作报告
- 民法典抵押课件
- 2026届福清市福清华侨中学化学高二上期末质量跟踪监视模拟试题含答案
- 2026届黑龙江省哈尔滨兆麟中学、阿城一中、尚志中学等六校化学高二上期中达标测试试题含解析
- 赣州市重点中学2026届高一化学第一学期期末教学质量检测模拟试题含解析
- 烟草面试笔试题目及答案
- 民法典婚姻家庭普法课件
- 封头理论重量计算公式
- 护理副高职称答辩5分钟简述范文
- (3)-2-1-药物的跨膜转运
- 幼小衔接资料合集汇总
- 八年级数学平面直角坐标系测试题
- GB/T 28575-2020YE3系列(IP55)三相异步电动机技术条件(机座号63~355)
- 储油罐有限空间作业安全技术措施表
- 传媒公司员工劳动合同(标准版)
- 缺血性肠病完整版本课件
- 学习《北方民族大学学生违纪处分规定(修订)》课件
- 设备出厂检验报告
评论
0/150
提交评论