资源描述:
《稀疏矩阵运算器实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、稀疏矩阵运算器一:问题描述:稀疏矩阵是指那些多数元素为零的矩阵。利用稀疏特点进行储存和计算可以大大节省储存空间,提高计算效率。实现一个能进行称稀疏矩阵基本运算的运算器。基本要求:以带逻辑链接信息的三元组顺序表表示稀疏矩阵,实现矩阵相加,相减,相乘的运算。稀疏矩阵的输入形式采用三元组表示。而运算结果的矩阵则用通常的阵列形式列出。测试数据:10000001000009+00-1=009-10010-300-31000010009+0-1=010-101-3-233004-30014200-6000080*010=80000100100010000070000
2、000二概要设计:intCreateSMatrix(TSMatrix&M)操作结果:创建矩阵MvoidDestroySMatrix(TSMatrix&M)初始条件:矩阵M存在操作结杲:销毁矩阵M;voidPrintSMatrix(TSMatrixM)初始条件:矩阵M存在操作结果:打卬矩阵MintAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix&Q)初始条件:矩阵M,N,Q存在操作结果:矩阵M,N,相加并储存于矩阵QintXSMatrix(TSMatrixM,TSMatrixN,TSMatrix&Q)初始条件:矩阵M,N,Q存
3、在操作结果:矩阵M,N,相减并储存于矩阵QintMultSMatrix(TSMatrixM,TSMatrixN,TSMatrix&Q)初始条件:矩阵M,N,Q存在操作结果:矩阵M,N,相乘并储存于矩阵Q三,详细程序#include"stdafx.h"#include"stdio.hH#include”stdlib.h”#defineMAXSIZE100//非零元个数的最大值structTriple{inti,j;//行下标,列下标inte;//非零元素值};structTSMatrix{Tripledata[MAXSIZE+l];intrpos[MAXS
4、IZE+1];//非零元三元组表,data[0]未用intmu,nu,tu;//矩阵的行数、列数和非零元个数};//bo5-2.cpp三元组稀疏矩阵的基本操作,包括算法5.1(9个)intCreateSMatrix(TSMatrix&M){//创建稀疏矩阵Minti,m,n;inte;intk;printfC*请输入矩阵的行数,列数,非零元素数:“);scanf(n%d,%d,%d",&M.mu,&M.nu,&M.tu);M.data[0].i=0;//为以下比较顺序做准备for(i=1;i<=M.tu;i++){do{printfC*请按行序顺序输入第
5、%(1个非零元素所在的行(l〜%d),列(l〜%d),元素值:”,iMmuMnu);scanf(”%d,%d,%d”,&m,&n,&e);k=0;if(m6、
7、m>M.mu
8、
9、n10、
11、n>M.nu)//彳亍或列超出范围k=l;if(m12、
13、m==M.datafi-1].i&&n<二M.daki[i・1].j)//行或列的顺序有错k=l;}while(k);M.data[i].i=m;M.data[i].j=n;M.data[i].e=e;}return1;}voidDestroySMatrix(TSMatrix&M){//销
14、毁稀疏矩阵MM.mu=0;M.nu=0;M.tu=0;voidPrintSMatrix(TSMalrixM){//输出稀疏矩阵Minti;printf(H%d行%d列%d个非零元素。fM.mu,M.nu,M.tu);printf("行列元素值“);for(i=l;i<=M.tu;i++)printf(',%2d%4d%8d,,,M.dataLi].i,M.data[i].j,M.data[i].e);}intcomp(intcl,intc2)//另力口{//AddSMatrix函数要用到inti;if(cl15、==c2)i=0;elsei=-l;returni;}intAddSMatrix(TSMatrixM,TSMatrixN,TSMatrix&Q){//求稀疏矩阵的和Q=M+NTriple*Mp,*Me,*Np,*Ne,*Qh,*Qe;if(M.mu!=N.mu)return0;if(M.nu!=N.nu)return0;Q.mu=M.mu;Q.nu=M.nu;Mp二&M.data[l];//Mp的初值指向矩阵M的非零元素首地址Np二&N.dataH];//Np的初值指向矩阵N的非零元素首地址Me二&M.datarM.tu];//Me指向矩阵M的非零元素尾
16、地址Ne二&N.data[N.tu];//Ne指向矩阵N的非零元素尾地址Qh=Q