欢迎来到天天文库
浏览记录
ID:6181358
大小:1.74 MB
页数:17页
时间:2018-01-05
《数据结构作业_稀疏矩阵运算器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实习报告题目:稀疏矩阵运算器编译环境:MicrosoftVisualStudio2010功能实现:以三元组顺序表输入稀疏矩阵实现两个稀疏矩阵相加、相减和相乘的运算运算结果的矩阵以阵列形式列出以十字链表表示稀疏矩阵一、需求分析1.稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”的特点进行存储和计算可以大大节省存储空间,提高计算效率。而本程序是以“带行逻辑链接信息”的三元顺序表表示稀疏矩阵,实现两个矩阵的相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。除此之外,程序还采用十字链表表示稀疏矩阵的。2.程序的测试数据:二、概要
2、设计1.本程序的基本算法设计:a)首先输入矩阵的行数和列数,并判断给出的两个矩阵的行、列对于所要求的运算是否匹配。a)对于三元组的输入顺序是按照行优先的限制进行矩阵输入的。1.数据结构设计:typedefstructNode{inti,j;//非零元素的行和列doublee;//非零元素的值Node*right;//非零元素行表的后继Node*down;//非零元素列表的后继}Node,*NLink;classCList{private:NLink*rhead;//行的头指针NLink*dhead;//列的头指针intrNum;//行数intdNum;//列数publ
3、ic:CList();virtual~CList();boolInsertNode(inti,intj,doublee);boolCreateMatrix();voidShowMatrix();boolAddMatrix(CList&Matrix);boolSubMatrix(CList&Matrix);boolMultiMatrix(CList&Matrix,CList*&Result);};一、详细设计1.主要操作函数的实现:(1)插入函数:在已经初始化的稀疏矩阵中插入某个元素。boolCList::InsertNode(inti,intj,doublee){No
4、de*p,*q;if(i>rNum
5、
6、j>dNum
7、
8、i<0
9、
10、j<0){cout<<"tInvalidrownumber!InsertNodeFailed!"<i=i;p->j=j;p->e=e;//在行表中寻找插入位置if(rhead[i]
11、==NULL
12、
13、rhead[i]->j>j){p->right=rhead[i];rhead[i]=p;}else{q=rhead[i];while((q->right)&&q->right->jright;}p->right=q->right;q->right=p;}//在列表中寻找插入位置if(dhead[j]==NULL
14、
15、dhead[j]->i>i){p->down=dhead[j];dhead[j]=p;}else{q=dhead[j];while((q->down)&&q->down->idown;}p->down=q-
16、>down;q->down=p;}returnTRUE;}(1)矩阵创建函数:根据用户的输入,创建稀疏矩阵。boolCList::CreateMatrix(){intm,n;inti,j;doublee;cout<<"tPleaseinputthenumberofrow:";cin>>m;cout<>n;cout<17、1;i++){rhead[i]=NULL;}for(i=0;i>i>>j>>e;cout<>i>>j>>e;cout<
17、1;i++){rhead[i]=NULL;}for(i=0;i>i>>j>>e;cout<>i>>j>>e;cout<
此文档下载收益归作者所有