资源描述:
《数据结构实验6稀疏矩阵》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1、实验目的(1)掌握稀疏矩阵三元组表的存储方法;(2)掌握稀疏矩阵三元组表的创建、显示、转罝和查找算法。2、实验内容(1)编写稀疏矩阵三元组表的存储程序;(2)编写稀疏矩阵三元组表的创建、显示、转置和查找程序。3、实验要求(1)用C(C++)语言完成算法设计和程序设计。(2)上机调试通过实验程序。(3)输入数据,检验程序运行结果。(4)给出具体的算法分析,包括时间复杂度和空间复杂度等。(5)撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。4、实验步骤与源程序(1)实验步骤先从具体的闷题中抽象出适当的数学模型,然后设计出相应的算法,其中,需要设计一个主函数來实
2、现菜单的输出,设计另外五个函数来求分别实现新建,转置,查找,显示,最后,串接函数,并调试程序,在调试的时候,我先进行新建操作,输入数据之后,然后开始转置操作,再进行查找其巾的非零元素,多次调试后,发现没有H题,得出实验结果,并截图。⑵源代码#include#include#include#include^defineSMAX100typodofstructSPNode{inti,j,v;};typedefstructsparmatrix{introws,cols,terms;SPNodedata[SMA
3、X];};sparmatrixCreateSparmatrix(){sparmatrixA;//三元组非零元素的s大个数//定义三元组//三元组非零元素的行、列和值//定义稀疏矩阵//稀疏矩阵行、列和非零元素的个数//三元组表//创建稀疏矩阵printfCtt请输入稀疏矩阵的行数,列数和非零元个数(用逗号隔开):");scanf(〃%d,%d,%d",&A.rows,&A.cols,&A.terms);for(intn二0;n<=A.terms-1;n++){printfCtt输入非零元值(格式:行号,列号,值):");scanf("%d,%d,%d〃,&A.dat
4、a[n].i,&A.data[n].j,&A.data[n].v);}returnA;}sparmatrixTrans(sparmatrixA)//转置稀疏矩阵{sparmatrixB;B.rows=A.cols;B.cols=A.rows;B.terms=A.terms;for(intn=0;n〈=A.terms-1;n++){B.data[n].i=A.data[n].j;B.data[n].j=A.data[n].i;B.data[n].v二A.data[n].v;}returnB;}voidShowSparmatrix(sparmatrixA)//显示稀疏矩阵{intk;p
5、rintf(〃tt〃);for(intx=0;x〈=A.rows-1;x++){for(inty=0;y〈=A.cols-1;y++){k=0;for(intn二0;n〈=A.terms-1;n+十){if((A.data[n].i==x)&&(A.data[n].j==y)){printf("%8d〃,A.data[n].v);k=l;}}if(k==0)}printf("tt");}}voidSearchSparmatrix(sparmatrixA,ints)//查找稀疏矩阵中非零元素{intn,t;t=A.terms;for(n=0;n〈t;n++){if(A
6、.data[n].v==s){printfrtt行列值11〃);%2d〃,printf(z,tt元素位置:%2d%2dA.data[n].i,A.data[n].j,A.data[n].v);n=—l;break;}}if(n!:-l)printf(z,tt矩阵中无此元素!");}voidmainO//稀疏矩阵的三元组存•储{intch=l,choice,s;structsparmatrixA,B;A.terms=0;B.terms=0;while(ch){printf(’An");printf(〃tt稀疏矩阵的三元组存储门〃);prin
7、tf("t木***********************************木")printf("tt*1——-新建printf("tt*2—转貫printf("tt*3————查找%”4显printf("tt氺0返冋printf(〃tt请输入菜单号(0—4):〃);scanf(〃%d〃,&choice);switch(choice){case1:A=CreateSparmatrix();break;case2