资源描述:
《数据结构(c语言版)程海英-上机4》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、上机4稀疏矩阵的压缩存储1•问题描述设矩阵A表示一个mXn的稀疏矩阵,其转置矩阵B则是一个nXm的稀疏矩阵,定义矩阵A、B均为三元组表存储类型,设计程序实现求A矩阵的转置矩阵B,并打印输出矩阵B。2•数据结构设计稀疏矩阵三元组表的数据类型:#defineSMAX100〃三元组非零元素的最大个数structSPNode{〃定义三元组inti;〃三元组非零元素的行、列和值intj;intv;structsparmatrix{〃定义稀疏矩阵introws,intcols;intterms;〃稀疏矩阵行、列和非零元素的个数SPNodedata[SMAX];〃三元组表};3•函数说
2、明稀疏矩阵三元组表的基本操作:sparmatrixCreateSparmatrix()〃创建稀疏矩阵sparmatrixTrans(sparmatrixA)〃转置稀疏矩阵〃显示稀疏矩阵voidShowSparmatrix(sparmatrixA)voidSearchSparmatrix(sparmatrixA,ints)〃查找稀疏矩阵中非零元索4•编码实现#include#include#include#defineSMAX100〃三元组非零元素的最大个数structSPNode{inti;intj;intv;}〃
3、定义三元组〃三元组非零元素的行、列和值structsparmatrix{introws,〃定义稀疏矩阵intcols;intterms;〃稀疏矩阵行、列和非零元素的个数SPNodedata
4、SMAX
5、;I•〃三元组表sparmatrixCreateSparmatrix(){sparmatrixA;〃创建稀疏距阵printf("tt请输入稀硫矩阵的行数,列数和非零元个数(用逗号隔开):”);scanf(“%d,%d,%d”,&A.rows,&A.cols,&A.terms);for(intn=0;n<=A.terms=1;n++){printf(Gtt输人非
6、零元值(格式:行号,列号,值):”);scanf("%d,%d,%d",&A.data
7、n].i,&A.data[n].j,&A.data[n].v);}returnA;}sparmatrixTrans(spamatrixA){sparmatrixB;B.rows二A.cols;〃将稀疏矩阵A转置B.cols=A.rows;B.terms二A.terms;for(intn=0;n<=A.terms=l;n++){B.data
8、n].i=A.data
9、n]j;B.data
10、n
11、.j=A.data[n].i;B.data[n].v=A・dara[n]・v;}returnB;}
12、voidShowSpannatrix(sparmatrixA){〃显示稀疏矩阵Bintk;printf(“tt”);for(intx=0;x<=A.rows-1;x++){for(inty=0;y<=A.cols-l;y++){k=0;for(intn=O;n<=A.terms-l;n++){if((A・data[n]・i==x)&&(A.data[n].j==y)){printf(“%8d”,A.data[n].v);k=l;}}if(k==0)printf(“%8d”,k);}〃查找稀疏矩阵中非零元素printf(“tt”);voidSeachSpar
13、matrix(sparmatrixA,ints){intn,t;t=A.terms;for(n=0;n14、.terms=0;while(ch){printf(HH);printf("tt稀疏矩阵的三元组存储”);printf(nttprintf(Htt1printf(utt2printf(”tt3printf("tt4新建”);转置n);查找”);显示n););n););printf(utt0退出printf(Htt<1^11•卜•卜•卜•卜•卜•卜•卜•卜•卜•卜八printf(utt请输入选择(0-4):");scanf(n%d",&choic