稀疏矩阵的乘法实现

稀疏矩阵的乘法实现

ID:1337203

大小:81.00 KB

页数:10页

时间:2017-11-10

稀疏矩阵的乘法实现_第1页
稀疏矩阵的乘法实现_第2页
稀疏矩阵的乘法实现_第3页
稀疏矩阵的乘法实现_第4页
稀疏矩阵的乘法实现_第5页
资源描述:

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

1、稀疏矩阵的乘法实现程序:print?1#include2#include3#defineNULL04#defineOK15#defineERROR06#defineMAXSIZE100/*矩阵中非零元的最大值*/7#defineMAXRC10/*矩阵的最大行值*/89typedefintstatus;1011/**********稀疏矩阵的行逻辑链接的顺序表存储表示**********/1213typedefstruct/*非零元的三元组*/14{15inti,j;/*非零元的行下标和列下标*/16inte;17}

2、Triple;1819typedefstruct/*稀疏矩阵的行逻辑链接的顺序表*/20{21Tripledata[MAXSIZE+1];/*非零三元组表,data[0]未用,以下定义的数组都是从1开始*/22intrpos[MAXRC+1];/*代表各行第一个非零元的序号表,其值为data的下标*/23intmu,nu,tu;/*矩阵的行数、列数、非零元的个数*/1}RLSMatrix;/*R:rowL:logicS:sequence*/234/*********基本操作的函数原型的声明*********/56statusCreateSMatrix_

3、RL(RLSMatrix*matrix);7//创建一个稀疏矩阵;8//输入行数、列数,支持乱序输入三元组,并计数;9//以行为主序进行重新排列,并记录每行起始位置于matrix->rpos[row];10//若非零元超过MAXSIZE或行数超过MAXRC,则返回ERROR,否则OK;1112voidPrintSMatrix_RL(RLSMatrix*matrix);13//输入矩阵,打印出矩阵的行数、列数、非零元个数,以及整个矩阵;1415statusMultSMatrix_RL(RLSMatrix*M,RLSMatrix*N,RLSMatrix*Q

4、);16//输入两个稀疏矩阵M和N,并初始化Q,然后计算M*N的值赋给Q;17//如果M->mu!=N->nu或列数大于MAXRC或者计算出的非零元个数大于MAXSIZE,都返回ERROR,否则OK;18//计算过程如下:19//1.由于矩阵M和Q的行数相等并且C语言以行为主序进行存储,所以以M进行逐行的扫描。20//2.使Q的此行逻辑表的序号等于其非零元个数Q.tu+1,以表示其行的首个元素的序号。1//3.从行中找到M的非零元,并以它的列值为N的行号,对N进行行的扫描,若存在,则依次计算它们,并把其值累加到一个以N中这个对应非零元的列值为序号的临时

5、数组ctemp[ccol]中。2//4.在M的当前行完成扫描后,将ctemp[ccol]不为0的值,压入到Q矩阵的三元组,累加++Q.tu,若Q.tu大于了MAXSIZE,这返回ERROR。34/************main()函数对矩阵乘法的实现************/56voidmain()7{8RLSMatrix*M,*N,*Q;9if(!(M=(RLSMatrix*)malloc(sizeof(RLSMatrix))))10exit(ERROR);11if(!(N=(RLSMatrix*)malloc(sizeof(RLSMatrix))

6、))12exit(ERROR);13if(!(Q=(RLSMatrix*)malloc(sizeof(RLSMatrix))))14exit(ERROR);15if(CreateSMatrix_RL(M)&&CreateSMatrix_RL(N))16{17printf("/nputoutM:/n");18PrintSMatrix_RL(M);/*打印出M*/19printf("/nputoutN:/n");20PrintSMatrix_RL(N);/*打印出N*/21if(MultSMatrix_RL(M,N,Q))22{1printf("/n/n/

7、nM*N:/n");2PrintSMatrix_RL(Q);/*计算结果*/3}4else5printf("M.muandN.nuarenotmathing/n");6}7else8printf("inputerror./n");9}101112/***********基本操作的算法描述****************/1314statusCreateSMatrix_RL(RLSMatrix*matrix)15//创建一个稀疏矩阵;16//输入行数、列数,支持乱序输入三元组,并计数;17{18intnum=0,p,q,min,temp;//中间变量;1

8、9introw;20printf("inputthetotalrowandcol:/n");2

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

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

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