资源描述:
《稀疏矩阵的压缩存储.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、稀疏矩阵的压缩存储(1)稀疏矩阵的定义:在矩阵中,多数的元素为0,则称此矩阵为稀疏矩阵三元组类://定义三元组publicclassTriple{introw;//行号intcol;//列号doubleval;//元素值//对各项数据进行初始化publicTriple(introw,intcol,doubleval){this.row=row;this.col=col;this.val=val;}publicStringtoString(){//输出三元组项return"("+row+","+col+","+val+")";}(2)用三元
2、组顺序表实现稀疏矩阵:(3)其中包括了稀疏矩阵的转置:注:(2)(3)放到了一块importjava.util.ArrayList;//稀疏矩阵的定义publicclassSparseMatrix{privateintrows;//行privateintcols;//列privateArrayListterms;//保存三元组//创建publicSparseMatrix(introws,intcols,ArrayListt){//TODOAuto-generatedconstructorstubthis.r
3、ows=rows;this.cols=cols;terms=t;}//输出publicvoidoutput(){System.out.println("稀疏矩阵的总行数和总列数分别为:"+rows+","+cols);for(inti=0;i4、,newArrayList());if(terms.size()==0)//空矩阵returnt;for(intk=1;k<=cols;k++){//列数作为最外层循环的终止条件每次扫描原稀疏矩阵的一列for(intj=0;j5、矩阵的转置://稀疏矩阵应用---->转置importjava.util.ArrayList;publicclassMatrix{publicstaticvoidmain(String[]args){ArrayListlist=newArrayList();//辅助SparseMatrix的构造器list.add(newTriple(1,3,3));list.add(newTriple(1,4,6));list.add(newTriple(2,3,-9));list.add(newTriple(3,1,8)
6、);list.add(newTriple(3,3,4));list.add(newTriple(3,5,6));list.add(newTriple(4,2,8));list.add(newTriple(5,3,-3));//稀疏矩阵行列数分别为6,5SparseMatrixs=newSparseMatrix(6,5,list);System.out.println("未转置之前的矩阵为(只输出非零元素):");s.output();System.out.println();System.out.println("转置之后的矩阵为(只输出
7、非零元素):");SparseMatrixss=s.transpose();ss.output();}}上述测试稀疏矩阵的转置程序中定义的矩阵的向量cpot的值以及num的值:col12345num[col]11411cpot[col]12378(4)1.结构定义:ADTSparseMatrix{数据对象:D={aij
8、i=1,2,…,m;j=1,2,..,n;aij∈Elemset,m和n分别称为矩阵的行数和列数} 数据关系:R={Row,Col} Row={
9、1<=i<=m,1<=j<
10、=n-1}Col={
11、1<=i<=m-1,1<=j<=n}基本操作:SparseMatrix(introws,intcols,ArrayListt)操