收藏 分享(赏)

系数矩阵.doc

上传人:jinchen 文档编号:7637042 上传时间:2019-05-22 格式:DOC 页数:8 大小:51.50KB
下载 相关 举报
系数矩阵.doc_第1页
第1页 / 共8页
系数矩阵.doc_第2页
第2页 / 共8页
系数矩阵.doc_第3页
第3页 / 共8页
系数矩阵.doc_第4页
第4页 / 共8页
系数矩阵.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、数据结构上机报告题目: 稀疏矩阵 班级:软件 08-1 姓名:褚宇磊 学号:08083124 完成日期:1.13一、需求分析(要实现的功能描述)1问题描述 将稀疏矩阵用三元组存储,并能实现转置、求和等基本功能2实现功能 转置、输入、输出、快速转置、求和等3测试数据 Matrix1 大小为 3*3 矩阵:非零元素 matrix02=9Matrix2 大小为 3*3 矩阵:非零元素 matrix01=19相加结果为 Matrix3 大小为 3*3 矩阵:非零元素 matrix02=9 和 matrix01=19转置结果:matrix20=9 和 matrix10=19。1抽象数据类型class S

2、parseMatrix /稀疏矩阵类friend ostream /重载输出friend istream /重载输入public:SparseMatrix(int maxSz=DefaultSize); /构造函数/ SparseMatrix(int r,int c);/构造函数SparseMatrix(SparseMatrix /构造函数/ SparseMatrix()delete smArray;/析构函数SparseMatrix /重载输出以后再写SparseMatrixTranspose(); /转置void Add(SparseMatrix /矩阵相加SparseMatrixMult

3、iply(SparseMatrix /矩阵相乘private:int Rows,Cols,Terms; /行数,列数,非零元素个数Tritupe*smArray; /三元组结点数组int maxTerms; /最非零元素个数;2整个程序包含功能模块及模块间的调用关系矩阵模块、主函数模块、后者使用前者三、详细设计1虚拟实现class SparseMatrix /稀疏矩阵类friend ostream /重载输出friend istream /重载输入public:SparseMatrix(int maxSz=DefaultSize); /构造函数/ SparseMatrix(int r,int

4、c);/构造函数SparseMatrix(SparseMatrix /构造函数/ SparseMatrix()delete smArray;/析构函数SparseMatrix /重载输出以后再写SparseMatrixTranspose(); /转置void Add(SparseMatrix /矩阵相加SparseMatrixMultiply(SparseMatrix /矩阵相乘private:int Rows,Cols,Terms; /行数,列数,非零元素个数Tritupe*smArray; /三元组结点数组int maxTerms; /最非零元素个数;2抽象数据类型中定义的操作算法实现te

5、mplateSparseMatrix:SparseMatrix(int maxSz):maxTerms(maxSz) /构造函数if(maxSzmaxSz;if(smArray=NULL)cerrSparseMatrix:SparseMatrix(SparseMatrix /拷贝行列Cols=x.Cols;Terms=x.Terms;maxTerms=x.maxTerms;smArray=new TritupemaxTerms;for(int i=0;iostreamif(M.TermsM.maxTerms)cerrM.smArrayi.rowM.smArrayi.colM.smArrayi.

6、value;return in;templateSparseMatrixCols=x.Cols;Terms=x.Terms;maxTerms=x.maxTerms;smArray=new TritupemaxTerms;for(int i=0;iSparseMatrixSparseMatrix:Transpose() /快速转置SparseMatrix b(maxTerms);b.Cols=Rows;b.Rows=Cols;b.Terms=Terms;int currentB=0;if(Terms0)for(int i=0;ivoid SparseMatrix:Add(SparseMatrix

7、 result.Cols=b.Cols;if(Rows!=b.Rows|Cols!=b.Cols) /判断两个矩阵是否匹配cerrindex_b)result.smArrayresult.Terms=b.smArrayj;j+;elseresult.smArrayresult.Terms=smArrayi;result.smArrayresult.Terms.value=smArrayi.value+b.smArrayj.value;i+;j+;result.Terms+;for(;iTerms;i+)result.smArrayresult.Terms=smArrayi;result.Ter

8、ms+;for(;jb.Terms;j+)result.smArrayresult.Terms=b.smArrayi;result.Terms+;3函数之间的调用关系 Transpose()调用复制构造函数、main ()调用 Transpose()和 Add()及输入输出函数四、调试分析1程序在调式过程中出现的问题及解决方法Add()比较混乱,最后修改了参数。2算法的时间复杂度分析Add O(Terms+b.Terms)Transpose O(Terms*Cols )3心得好好利用单步调试,好好利用网络资源,认真仔细。五、用户手册操作方法:运行程序,按照提示输入行数、列数、个数,即可获得想要

9、的结果六、测试结果Enter number of rows,columns,and terms3 3 1Enter row,column,and value of term10 2 9Rows=3Cols=3The number of nonzero terms is:1M02=9Enter number of rows,columns,and terms3 3 1Enter row,column,and value of term10 1 19Rows=3Cols=3The number of nonzero terms is:1M01=19The result:Rows=3Cols=3The number of nonzero terms is:2M01=19M02=9转置:Rows=3Cols=3The number of nonzero terms is:2M10=19M20=9Press any key to continue七、心得体会、认真总结每次调试所犯的错误,因为每次常常犯同样的错误。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报