下载此文档

数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
Forpersonaluseonlyinstudyandresearch;mercialuseForpersonaluseonlyinstudyandresearch;mercialuse/* 数据结构C语言版稀疏矩阵的三元组顺序表存储表示和实现 P98 编译环境:Dev-C++ 日期:2011年2月8日*/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",,,); printf("%4s%4s%8s\n","行","列","元素值"); for(i=1;i<=;i++) printf("%4d%4d%8d\n",[i].i,[i].j,[i].e);}//由稀疏矩阵M复制得到TintCopySMatrix(TSMatrixM,TSMatrix*T){ (*T)=M; return1;}//p(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(!=) return0; if(!=) return0; (*Q).mu=; (*Q).nu=; Mp=&[1]; //Mp的初值指向矩阵M的非零元素首地址 Np=&[1]; //Np的初值指向矩阵N的非零元素首地址 Me=&[]; //Me指向矩阵M的非零元素尾地址 Ne=&[]; //Ne指向矩阵N的非零元素尾地址 Qh=Qe=(*Q).data; //Qh、Qe的初值指向矩阵Q的非零元素首地址的前一地址 while(Mp<=Me&&Np<=Ne) { Qe++; p(Mp->i,Np->i)) { case1: *Qe=*Mp; Mp++; break; case0: //M、N矩阵当前非零元素的行相等,继续比较列 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: *Q

数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小枷
  • 文件大小34 KB
  • 时间2019-03-19