预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

typedefintElemType;//稀疏矩阵得三元组顺序表存储表示#defineMAXSIZE100//非零元个数得最大值typedefstruct{inti,j;ﻩ//行下标,列下标ﻩElemTypee;//非零元素值}Triple;typedefstruct{Tripledata[MAXSIZE+1];//非零元三元组表,data[0]未用ﻩintmu,nu,tu;ﻩﻩ//矩阵得行数、列数与非零元个数}TSMatrix;//创建稀疏矩阵MintCreateSMatrix(TSMatrix*M){ﻩinti,m,n;ﻩElemTypee;ﻩintk;printf("请输入矩阵得行数,列数,非零元素个数:(逗号)\n”);ﻩscanf(”%d,%d,%d”,&(*M)、mu,&(*M)、nu,&(*M)、tu);(*M)、data[0]、i=0;ﻩ//为以下比较顺序做准备ﻩfor(i=1;i〈=(*M)、tu;i++)ﻩ{ﻩdoﻩﻩ{ﻩﻩﻩprintf("请按行序顺序输入第%d个非零元素所在得行(1~%d),"ﻩﻩ"列(1~%d),元素值:(逗号)\n",i,(*M)、mu,(*M)、nu);ﻩﻩscanf("%d,%d,%d",&m,&n,&e);ﻩk=0;ﻩﻩ//行或列超出范围if(m〈1||m〉(*M)、mu||n<1||n>(*M)、nu)ﻩﻩk=1;ﻩﻩif(m<(*M)、data[i—1]、i||m==(*M)、data[i-1]、iﻩﻩ&&n<=(*M)、data[i—1]、j)//行或列得顺序有错ﻩﻩk=1;ﻩ}while(k);ﻩ(*M)、data[i]、i=m;//行下标(*M)、data[i]、j=n;//列下标(*M)、data[i]、e=e;ﻩ//该下标所对应得值}return1;}//销毁稀疏矩阵M,所有元素置空voidDestroySMatrix(TSMatrix*M){ﻩ(*M)、mu=0;ﻩ(*M)、nu=0;ﻩ(*M)、tu=0;}//输出稀疏矩阵MvoidPrintSMatrix(TSMatrixM){inti;ﻩprintf("\n%d行%d列%d个非零元素。\n",M、mu,M、nu,M、tu);printf("%4s%4s%8s\n",”行","列",”元素值”);ﻩfor(i=1;i<=M、tu;i++)printf("%4d%4d%8d\n",M、data[i]、i,M、data[i]、j,M、data[i]、e);}//由稀疏矩阵M复制得到TintCopySMatrix(TSMatrixM,TSMatrix*T){ﻩ(*T)=M;ﻩreturn1;}//AddSMatrix函数要用到intp(intc1,intc2){ﻩinti;ﻩif(c1<c2)ﻩi=1;elseif(c1==c2)ﻩi=0;ﻩelseﻩﻩi=—1;ﻩreturni;}//求稀疏矩阵得与Q=M+NintAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix*Q){ﻩTriple*Mp,*Me,*Np,*Ne,*Qh,*Qe;if(M、mu!=N、mu)ﻩreturn0;ﻩif(M、nu!=N、nu)ﻩﻩreturn0;(*Q)、mu=M、mu;(*Q)、nu=M、nu;ﻩMp=&M、data[1];ﻩ//Mp得初值指向矩阵M得非零元素首地址Np=&N、data[1];//Np得初值指向矩阵N得非零元素首地址Me=&M、data[M、tu];ﻩ//Me指向矩阵M得非零元素尾地址ﻩNe=&N、data[N、tu];ﻩ//Ne指向矩阵N得非零元素尾地址Qh=Qe=(*Q)、data;//Qh、Qe得初值指向矩阵Q得非零元素首地址得前一地址while(Mp<=Me&&Np<=Ne){Qe++;ﻩswitch(p(Mp->i,Np-〉i))ﻩﻩ{ﻩcase1:ﻩ*Qe=*Mp;ﻩMp++;ﻩbreak;ﻩcase0:ﻩﻩ//M、N矩阵当前非零元素得行相等,继续比较列ﻩﻩswitch(p(Mp->j,Np->j)){ﻩcase1:*Qe=*Mp;ﻩﻩMp++;ﻩbreak;ﻩcase0:ﻩﻩ*Qe=*Mp;ﻩﻩQe—>e+=Np-〉e;ﻩﻩif(!Qe->e)//元素值为0,不存入压缩矩阵ﻩﻩQe--;ﻩﻩﻩMp++;ﻩﻩﻩNp++;ﻩﻩﻩbreak;ﻩﻩcase—1:ﻩﻩ*Qe=*Np;ﻩNp++;ﻩ}ﻩﻩbreak;ﻩcase-1:ﻩﻩ*Qe=*Np;ﻩﻩNp++;ﻩﻩ}}if(Mp〉Me)//矩阵M得元素全部处理完毕ﻩwhile(Np<=Ne)ﻩ{ﻩﻩQe++;*Qe=*Np;Np++;ﻩﻩ}ﻩif(Np>Ne)//矩阵N得元素全部处理完毕ﻩwhile(Mp<=Me)ﻩ{ﻩQe++;