实验四 数组的运算.doc_第1页
实验四 数组的运算.doc_第2页
实验四 数组的运算.doc_第3页
实验四 数组的运算.doc_第4页
实验四 数组的运算.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构数组的运算实验报告专 业: 计算机科学与技术 班 级: 计科0901 姓 名: 实验四 数组的运算实验目的: 掌握稀疏矩阵的压缩存储方法及主要运算的实现。实验内容与要求: 设计一个稀疏矩阵计算器,要求能够:输入并建立稀疏矩阵;输出稀疏矩阵;执行两个矩阵相加;执行两个矩阵相乘;求一个矩阵的转置矩阵;(选做)求一个矩阵的逆矩阵。#include#include#includeusing namespace std;class Triplepublic:int i,j;int e;class TSMatrixpublic:Triple data1001;int rpos1001;int mu,nu,tu;bool CreateSMatrix(TSMatrix & M);/建立矩阵bool DestroyMatrixTSMatrix (TSMatrix & M);/消灭矩阵bool PrintSMatrix(TSMatrix M);/输出矩阵 bool CopySMatrix(TSMatrix M,TSMatrix &T);/M复制到T bool AddSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q);/Q=M+Nbool SubtSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q);/Q=M-Nbool MultSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q);/Q=M*Nbool TransposeSMatrix(TSMatrix M,TSMatrix &T);/矩阵的转置;bool CreateSMatrix(TSMatrix & M)/建立矩阵 if(!(M=( TSMatrix) malloc(sizeof( TSMatrix)return false;coutM.mu;coutM.nu;coutM.tu;cout输入三元素,如:1 2 3;for(int k=1;kM.datak.iM.datak.jM.datak.e;return true;bool DestroyMatrix(TSMatrix & M)/消灭矩阵TSMatrix *p=& M;free(p);return true;bool PrintSMatrix(TSMatrix M)/输出矩阵for(int k=1;k=M.mu;k+)for(int g=1;g=M.nu;g+)int flag=0;for(int l=1;lM.tu;l+)if(M.datal.i=k&M.datal.j=g)coutM.datal.e ;flag=1;break;if(flag=0)cout0 ;coutendl;return true;bool CopySMatrix(TSMatrix M,TSMatrix &T)/M复制到Tif(M.nu!=T.nu|M.mu!=T.mu)return false;T=M;return true;bool MultSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q)/Q=M*Nint arrow,brow,tp,p,q,t,ccol,ctemp1000; if (M.nu!=N.mu) return false; Q.mu=M.mu; Q.nu=N.nu; Q.tu=0;if (M.tu*N.tu!=0) for (arrow=1;arrow=M.mu;+arrow) for (p=1;p=N.nu;p+) ctempp=0; Q.rposarrow=Q.tu+1;if (arrowM.mu) tp=M.rposarrow+1;else tp=M.tu+1;for (p=M.rposarrow;ptp;+p) brow=M.datap.j;if (browN.mu) t=N.rposbrow+1;else t=N.tu+1; for (q=N.rposbrow; qt; +q) ccol=N.dataq.j; ctempccol+=M.datap.e * N.dataq.e; for (ccol=1; ccol1000) return false;Q.dataQ.tu.i=arrow;Q.dataQ.tu.j=ccol; Q.dataQ.tu.e=ctempccol; return true; bool TransposeSMatrix(TSMatrix M,TSMatrix &T)/矩阵的转置 T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;if(T.tu)int q=1;for(int col=1;col=M.nu;+col)for(int p=1;p=M.tu;p+)if(M.datap.j=col)T.datap.i=M.datap.j;T.datap.i=M.datap.j;T.dataq.j=M.datap.i;T.dataq.e=M.datap.e;+q;return true;bool AddSMatrix(TSMatrix M,TSMatrix N,TSMatrix &Q)/Q=M+Nif(M.nu!=N.nu|M.mu!=N.mu)return false;int p=1;for(int k=1;k=M.mu;k+)for(int g=1;g=M.nu;g+)int flag1=0,flag2=0,num1=0,num2=0;for(int l=1;lM.tu;l+)if(M.datal.i=k&M.datal.j=g)flag1=1;num1=M.datal.e;break;for(int h=1;hM.tu;h+)if(N.datah.i=k&N.datah.j=g)flag2=1;num2=N.datah.e;break;if(!(flag1=0&flag2=0)if(num1-num2)!=0)Q.datap+.e=num1-num2;Q.tu=p-1;return true;bool SubtSMatrix(TSMatrix M,TSMatrix N,TSMatrix & Q)/Q=M+Nif(M.nu!=N.nu|M.mu!=N.mu)return false;int p=1;for(int k=1;k=M.mu;k+)for(int g=1;g=M.nu;g+)int flag1=0,flag2=0,num1=0,num2=0;for(int l=1;lM.tu;l+)if(M.datal.i=k&M.datal.j=g)flag1=1;num1=M.datal.e;break;for(int h=1;hM.tu;h+)if(N.dat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论