欢迎来到天天文库
浏览记录
ID:35342355
大小:64.35 KB
页数:5页
时间:2019-03-23
《实验四稀疏矩阵三元组下转置》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四、稀疏矩阵三元组下转置一、实验内容将稀疏矩阵中的每个非零元素aij表示为(i,j,v),即(行号,列号,非零元素值)•称为三元组表示法。用结构类型來描述三元组。将稀疏矩阵的非零元素对应的三元组所构成的集合,按行优先的顺序排列成一个线性表。在稀疏矩阵用三元组顺序表存储结构下,实现稀疏矩阵转置,得到其转置矩阵的三元组顺序表存储表示。要求:1)采用转置算法I:直接取,顺序存2)采用转置算法II:顺序取,直接存。要使用两个辅助一维数组,分别先计算出原矩阵每一列的非零元个数以及每一列的第一个非零元在转置矩阵的
2、三元组顺序表中的存储位置。二、实验目的1.掌握稀疏矩阵的三元组顺序表存储结构;2.掌握稀疏矩阵转置算法I;3.掌握稀疏矩阵转置算法II三、实验代码//文件:SparseMatrix.htemplatestructelement{introw,col;//行数、列数Titem;//元素值};constintMaxTerm=100;templateclassSparseMatrix{public:SparseMatrix(){};SparseMatrix(intintmu,in
3、tintnu,intinttu,elemcntdatatemp[]);//有参构造函数,初始化稀疏矩阵"SparseMatrix(){};//析构函数,释放存储空间elementGetMatrix(intintnumber);//输出下标对应的数组元素voidPrt();//显示三元组顺序表voidTrans1(SparseMatrix&B);//直接取、顺序存的矩阵转置算法voidTrans2(SparseMiitrixA,SparseMatrix&B);//顺序取、直接存
4、的矩阵转置算法private:elementdata[MaxTerm];//矩阵非零元素intmu,nu,tu;//行数、列数、非零元个数};//文件:SparseMatrix.cpptfinclude"SparseMatrix.h"//引用三元组顺序表的头文件#include//引用string库函数的头文件usingnamespacestd;//指出后续的所有的程序语句都在名字空间std内/*前置条件:三元组顺序表不存在输入:三元组顺序表的行数(intmu)s列数(intnu)>
5、非零元个数(inttu)、初始三元组(datatemp[])功能:三元组顺序表的初始化输出:无后置条件:建立一个三元组顺序表*/templateSparseMatrix::SparseMatrix(intintmu,intintnu,intinttu,elementdatatcmp[]){if(inttu>MaxTerm)throw〃构造函数的初始化参数不正确";mu=intmu;nu=intnu;tu=inttu;for(inti=O;i6、三元组顺序表已存在输入:下标(intnumber)功能:读取这组下标对应的数组元素输出:对应元素后置条件:三元组顺序表不变*/template〈classT>element〈T>SparseMatrix::GetMatrix(intintnumber){/*前置条件:输入:功能:if(intnumber>=tu7、8、intnumber<0)throw输入位置不正确";returndata[i];无无显示三元组顺序表输出:无后置条件:建立一个三元组顺序表*/templatevoidSpa9、rseMatrix::Prt(){for(inti=0;ivoidSparseMatrix::Trans1(SparseMatrix&B){intpb,pa;10、B.mu=this->nu;B.nu=this~>mu;B.tu=this~>tu;//设置彳亍数、列数、非零元素个数if(B.tu>0)〃有非零元素则转换{pb二0;for(intcol=0;colnu;col++)//依次考察每一列for(pa=0;patu;pa++)//在A中扫描整个三元组表if(this->data[paj.col==col)//处理col列元素{B.data[pbj.ro
6、三元组顺序表已存在输入:下标(intnumber)功能:读取这组下标对应的数组元素输出:对应元素后置条件:三元组顺序表不变*/template〈classT>element〈T>SparseMatrix::GetMatrix(intintnumber){/*前置条件:输入:功能:if(intnumber>=tu
7、
8、intnumber<0)throw输入位置不正确";returndata[i];无无显示三元组顺序表输出:无后置条件:建立一个三元组顺序表*/templatevoidSpa
9、rseMatrix::Prt(){for(inti=0;ivoidSparseMatrix::Trans1(SparseMatrix&B){intpb,pa;
10、B.mu=this->nu;B.nu=this~>mu;B.tu=this~>tu;//设置彳亍数、列数、非零元素个数if(B.tu>0)〃有非零元素则转换{pb二0;for(intcol=0;colnu;col++)//依次考察每一列for(pa=0;patu;pa++)//在A中扫描整个三元组表if(this->data[paj.col==col)//处理col列元素{B.data[pbj.ro
此文档下载收益归作者所有