稀疏矩阵乘法运算.doc

稀疏矩阵乘法运算.doc

ID:57580562

大小:72.50 KB

页数:8页

时间:2020-08-27

稀疏矩阵乘法运算.doc_第1页
稀疏矩阵乘法运算.doc_第2页
稀疏矩阵乘法运算.doc_第3页
稀疏矩阵乘法运算.doc_第4页
稀疏矩阵乘法运算.doc_第5页
资源描述:

《稀疏矩阵乘法运算.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、稀疏矩阵的乘法运算程序代码:#include#include#include#include#include#include#defineTure1#defineOverflow-1typedefstructOLnode{inti,j;inte;structOLnode*right,*down;}OLnode,*Olink;typedefstruct{Olink*rhead,*chead;intmu,nu,tu;}Crosslist;//在十

2、字链表M.rhead[row]中插入一个t结点voidinsert_row(Crosslist&M,OLnode*t,introw){OLnode*p;intcol=t->j;if(M.rhead[row]==NULL

3、

4、M.rhead[row]->j>col){t->right=M.rhead[row];M.rhead[row]=t;}else{for(p=M.rhead[row];p->right&&p->right->jright);//寻找在行表中的插入位置t->right=p->right;p->right=t;}}//在十字链表

5、M.chead[col]中插入一个结点tvoidinsert_col(Crosslist&M,OLnode*t,intcol){OLnode*p;introw=t->i;if(M.chead[col]==NULL

6、

7、M.chead[col]->i>row){t->down=M.chead[col];M.chead[col]=t;}else{for(p=M.chead[col];p->down&&p->down->idown);//寻找在列表中的插入位置t->down=p->down;p->down=t;}}//创建十字链表并存入数据void

8、input(Crosslist&M){intm,n,t;cout<<"请输入矩阵的行和列的个数及非零元个数";cin>>m>>n>>t;if(t>m*n)exit(Overflow);M.mu=m;M.nu=n;M.tu=t;introw,col,e;OLnode*q;M.rhead=(Olink*)malloc((m+1)*sizeof(Olink));M.chead=(Olink*)malloc((n+1)*sizeof(Olink));if(!M.rhead)exit(Overflow);if(!M.chead)exit(Overflow);for(in

9、ti=0;i<=m+1;i++)M.rhead[i]=NULL;for(intj=0;j<=n;j++)M.chead[j]=NULL;cout<<"请输入矩阵"<>row>>col>>e;row!=0&&k<=t;cin>>row>>col>>e,k++){q=(OLnode*)malloc(sizeof(OLnode));if(!t)exit(Overflow);q->e=e;//生成结点q->i=row;q->j=col;insert_row(M,q,row);//完成行插入insert_col(M,q,col)

10、;//完成列插入}}//矩阵M与矩阵N的乘法运算voidchengfa(CrosslistM,CrosslistN,Crosslist&Q){if(M.nu!=N.mu)exit(Overflow);Q.mu=M.mu;Q.nu=N.nu;Q.tu=0;OLnode*p,*q,*t;Olinktemp;inte,col;Q.rhead=(Olink*)malloc((Q.mu+1)*sizeof(Olink));Q.chead=(Olink*)malloc((Q.nu+1)*sizeof(Olink));if(!Q.rhead)exit(Overflow);i

11、f(!Q.chead)exit(Overflow);temp=(Olink)malloc((Q.nu+1)*sizeof(OLnode));for(inti=0;i<=Q.mu+1;i++)Q.rhead[i]=NULL;for(intj=0;j<=Q.nu;j++)Q.chead[j]=NULL;for(introw=1;row<=Q.mu;row++){for(intk=1;k<=Q.nu;k++)temp[k].e=0;for(p=M.rhead[row];p!=NULL;p=p->right){introw2=p->j;for(q=N.rhead[ro

12、w2];q;q=q->right)//

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

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

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