C语言数据结构 稀疏矩阵.doc

C语言数据结构 稀疏矩阵.doc

ID:54701300

大小:31.32 KB

页数:4页

时间:2020-04-20

C语言数据结构 稀疏矩阵.doc_第1页
C语言数据结构 稀疏矩阵.doc_第2页
C语言数据结构 稀疏矩阵.doc_第3页
C语言数据结构 稀疏矩阵.doc_第4页
资源描述:

《C语言数据结构 稀疏矩阵.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验十稀疏矩阵#include#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineMAXSIZE100typedefintStatus;typedeffloatElemType;typedefstruct{inti,j;//非零元素行下标和列下标ElemTypee;//非零元素值}Triple;typedefstruct{Tripledata[MAXSIZE+1];//非零元三元组表,data[0]不用intmu,nu,tu;//矩阵的行数、列数和非零元素个数}TSMatrix;TSMatrixNewMat

2、rix(intm,intn);//新建一个三元组表示的稀疏矩阵StatusInsertElem(TSMatrix*M,introw,intcol,ElemTypee);//在三元组表示的稀疏矩阵M,第row行,第col列位置插入元素e//插入成功,返回OK,否则返回ERRORStatusFindElem(constTSMatrix*M,introw,intcol,ElemType*e);//查找三元组表示的稀疏矩阵M中,第row行,第col列元素,若不为0,//则用e返回其值,并返回TRUE,否则返回FALSEStatusTransposeSMatrix(constTSMatrix

3、*M,TSMatrix*T);//采用三元组表存储表示,求稀疏矩阵M的转置矩阵TStatusFastTransposeSMatrix(constTSMatrix*M,TSMatrix*T);//利用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵TStatusMultSMatrix(constTSMatrix*M,constTSMatrix*T,TSMatrix*Q);//稀疏矩阵的乘法,如果符合乘法规则,Q返回M*T结果,并返回OK,否则返回ERRORvoidPrintSMatrix(constTSMatrix*M);//打印稀疏矩阵所有元素intmain(){TSMatrixM=N

4、ewMatrix(3,4);TSMatrixT;TSMatrixQ;InsertElem(&M,3,2,3.65);InsertElem(&M,2,2,2.31);printf("M:");PrintSMatrix(&M);FastTransposeSMatrix(&M,&T);printf("T(TransposeofM):");PrintSMatrix(&T);MultSMatrix(&M,&T,&Q);printf("M*T=");PrintSMatrix(&Q);return0;}TSMatrixNewMatrix(intm,intn){//新建一个三元组表示的

5、稀疏矩阵TSMatrixM;M.mu=m;M.nu=n;M.tu=0;returnM;}StatusInsertElem(TSMatrix*M,introw,intcol,ElemTypee){//在三元组表示的稀疏矩阵M,第row行,第col列位置插入元素e//插入成功,返回OK,否则返回ERRORinti,t,p;if(M->tu>=MAXSIZE){//当前三元组表已满printf("Error:Thereisnospaceinthematrix;");returnERROR;}if(row>M->mu

6、

7、col>M->nu

8、

9、row<1

10、

11、col<1)//插入位置越

12、界,不在1~mu或1~nu之间{printf("Error:Insertpositionisbeyondthearrange.");returnERROR;}p=1;//标志新元素应该插入的位置if(M->tu==0)//插入前矩阵M没有非零元素{M->data[p].i=row;M->data[p].j=col;M->data[p].e=e;M->tu++;returnOK;}for(t=1;t<=M->tu;t++)//寻找合适的插入位置if((row>=M->data[t].i)&&(col>=M->data[t].j))p++;if(row==M->data[t-1

13、].i&&col==M->data[t-1].j){//插入前,该元素已经存在M->data[t-1].e=e;returnOK;}for(i=M->tu;i>=p;i--){//移动p之后的元素M->data[i+1].i=M->data[i].i;M->data[i+1].j=M->data[i].j;M->data[i+1].e=M->data[i].e;}//插入新元素M->data[p].i=row;M->data[p].j=col;M->data[p].e

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

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

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