实验2 稀疏矩阵的建立与转置一、实验目的掌握特别矩阵的存储和操作算法。二、实验内容及问题描述实现用三元组保存稀疏矩阵并实现矩阵转置的算法。三、实验步骤1. 定义稀疏矩阵的三元组形式的存储结构。2. 实现三元组矩阵的传统转置算法。3. 实现三元组矩阵的快速转置算法。4. 输入矩阵非零元素,测试自己完成的算法。四、程序流程图五、概要设计矩阵是很多的科学与工程计算中讨论的数学对象。在此,我们感兴趣的是,从数学结构这门学科着眼,如何存储矩阵的元从而使矩阵的各种运算有效的进行。 原来,用二维数组存储矩阵,在逻辑上意义是很明确的,也很容易理解,操作也很容易和方便。但是在数值分析中常常出现一些阶数很高的矩阵,同时,在矩阵中又有很多值相同或者都为零的元素,可以对这种矩阵进行压缩存储:对多个值相同的元素只分配一个存储空间;对零元素不分配空间。稀疏矩阵的定义是一个模糊的定义:即非零元个数较零元个数较少的矩阵例如下图所示的矩阵为一个稀疏矩阵。 为了实现稀疏矩阵的这种存储结构,引入三元组这种数据结构。三元组的线性表顺存储形式如下图:六、详细设计sanyuanzu.h 头文件#define max 100typedef struct{ int row,col; int e;}Triple;//定义三元组typedef struct{ Triple data[max]; int mu,nu,tu;}TSMatrix;///*定义三元组的稀疏矩阵*/ void creat( TSMatrix &M) ; void fasttrans(TSMatrix A,TSMatrix &B); void printfx(TSMatrix x);sanyuanzu.cpp 文件#include#include"sanyuanzu.h"/*建立三元组的稀疏矩阵*/ void creat( TSMatrix &M){ printf("请输入稀疏矩阵的行数:"); scanf("%d",&M.mu); printf("请输入稀疏矩阵的列数:"); scanf("%d",&M.nu); printf("请输入矩阵中非零元素的个数:"); scanf("%d",&M.tu); int i; printf("请输入这%d 个元素的行号和列号及其元素的值:/n",M.tu); for(i = 1; i <= M.tu; i++)scanf("%d %d %d",&M.data[i].row,&M.data[i].col,&M.data[i].e);}/*实现三元组的矩阵转置的函数*/ void fasttrans(TSMatrix A,TSMatrix &B){ int col,cpot[max],num[max],t,p,q;/*初始化矩阵B*/ B.mu=A.nu; B.nu=A.mu; B.tu=A.tu; if(B.tu) { for(col=1;col<=A.nu;++col) num[col]=0;/*初始化每一列非零元的个数*/ for(t=1;t<=A.tu;++t) ++num[A.data[t].col];/*计算每一列非零元的个数*/ cpot[1]=1; fo...