十字链表实现稀疏矩阵的加法.doc

十字链表实现稀疏矩阵的加法.doc

ID:55898127

大小:254.50 KB

页数:15页

时间:2020-06-13

十字链表实现稀疏矩阵的加法.doc_第1页
十字链表实现稀疏矩阵的加法.doc_第2页
十字链表实现稀疏矩阵的加法.doc_第3页
十字链表实现稀疏矩阵的加法.doc_第4页
十字链表实现稀疏矩阵的加法.doc_第5页
资源描述:

《十字链表实现稀疏矩阵的加法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二十字链表一、实验题目以十字链表为储存结构,实现稀疏矩阵的求和运算。二、问题描述1、功能要求:根据用户输入的矩阵,实现稀疏矩阵的求和运算,并输出结果。2、输入要求:矩阵的数据在程序运行的时候由用户提供,先由用户输入稀疏矩阵的行数、列数和非零元个数。再根据非零元个数,输入这些非零元,还需要用户为这些非零元输入行、列和非零元的值。这样,一个稀疏矩阵就输入完成。若输入332则表示这个稀疏矩阵有3行3列2个非零元然后用户需要为这两个非零元输入行、列、非零元的值如:112221表示第一个非零元行为1,列为1,,值为2;第二个非零元行为2,列为2,值为1。此过程输入的稀疏矩阵为:20

2、00100003、输出要求:输出按矩阵输出,按行列依次输出,非零元则输出非零元的值,不是非零元则输出“0”。各元素之间用空格隔开。最后输出完整的矩阵。三、概要设计1.稀疏矩阵的抽象数据类型定义如下:ADTSparseMatrix{数据对象:D={aij

3、i=1,2,3……m,j=1,2,3……n;aij属于ElemSet,m和n分别是稀疏矩阵的行数和列数}数据关系:R={Row,Col}Row={

4、1<=i<=m,1<=j<=n-1}Col={

5、1<=i<=m-1,1<=j<=n}基本操作:CreateSMatrix(&M);//建

6、立稀疏矩阵MDestroySMatrix(&M);//销毁稀疏矩阵M;TransposeSMatrix(M);//求稀疏矩阵的转置矩阵AddSMatrix(&M,&N);//求稀疏矩阵M和N之和MulSMatrix(&M,&N);//求稀疏矩阵M和N之积}ADTSparseMatrix2、存储结构选择采用十字链表存储稀疏矩阵,它是稀疏矩阵链式表示的一种较好的表示方法。在十字链表中,每一个非零矩阵元素存储在一个结点。每一个节点除了存储非零元素的三元组以外,还设置了right和down两个指针,分别指向同一行的下一个非零元素结点和同一列的下一个非零元结点。3、其他函数1)主函数m

7、ain()2)作为友元函数的加法运算。四、详细设计用十字链表表示稀疏矩阵,需要定义结点类和链表类两个类1、结点类MatrixNodetemplateclassMatrixNode{friendclassLinkMatrix;friendistream&operator>>(istream&,LinkMatrix&);friendostream&operator<<(ostream&out,LinkMatrix&);friendLinkMatrixoperator+(constLinkMatrix

8、&a,constLinkMatrix&b);private:introw,col;MatrixNode*right,*down;union{Typedata;MatrixNode*next;};};2、链表类templateclassLinkMatrix{private:MatrixNode*head;voidInsertInCol(MatrixNode*p);voidDeleteInCol(MatrixNode*p);public:friendistream&operator>>(

9、istream&in,LinkMatrix&);friendostream&operator<<(ostream&out,LinkMatrix&);MatrixNode*Head(inti);LinkMatrix&operator+=(constLinkMatrix&a);friendLinkMatrixoperator+(constLinkMatrix&a,constLinkMatrix&b);};1、求头结点函数templateMatrixNode

10、e>*LinkMatrix::Head(inti){MatrixNode*a;a=head->next;for(intj=1;jnext;}returna;}2、将结点p插入p->col列中templatevoidLinkMatrix::InsertInCol(MatrixNode*p){MatrixNode*pre,*ch=Head(p->col);pre=ch;while(pre->down!

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。