三元组的应用.doc_第1页
三元组的应用.doc_第2页
三元组的应用.doc_第3页
三元组的应用.doc_第4页
三元组的应用.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

五邑大学实验报告实验课程名称数据结构院系名称: 计算机学院专业名称: 实验项目名称: 三元组的应用班级: 学号:报告人: 实验地点: 6一 实验目的1、掌握稀疏矩阵三元组表的存储、创建、显示、转置。2、了解稀疏矩阵的相关应用。二 实验内容使用三元组表存储稀疏矩阵,编写算法求它的转置矩阵。三 内容分析算法基本思想描述: 由于稀疏矩阵的非零元素较少,零元素较多,所以只需存储其非零元素。因此可以建立一个三元组表,分别保存稀疏矩阵的非零元素的行号、列号和元素值。对稀疏矩阵进行快速转置 是可以引入两个向量 numn+1,cpotn+1,分别标记矩阵中第col 列的非零元素个数和第一个 非零元素在转置后的矩阵的位置;再扫描三元组表,找到非零元素,直接对其在转置后的矩 阵所在的位置上进行修改,以节省时间。四 实验步骤要点1、 三元组的建立:template struct SparsMatrix element dataMaxTerm; int mu,nu,tu;2、三元组的转置:void SparsT(SparsMatrix M1, SparsMatrix &M2)int i;int *num=new intM1.nu;int *num1=new intM1.nu ;/存放累计个数int *num2=new intM1.nu; /已经存放的个数for(i=0;iM1.nu;i+)numi=0;num1i=0;num2i=0;for(i=0;iM1.tu;i+)numM1.datai.col-1+;num10=0;for(i=1;iM1.nu;i+)num1i=num1i-1+numi-1;M2.mu=M1.nu,M2.nu=M1.mu,M2.tu=M1.tu;for(i=0;iM1.tu;i+)M2.datanum1M1.datai.col-1+num2M1.datai.col-1.row=M1.datai.col;M2.datanum1M1.datai.col-1+num2M1.datai.col-1.col=M1.datai.row;M2.datanum1M1.datai.col-1+num2M1.datai.col-1.item=M1.datai.item;num2M1.datai.col-1+;3、三元组的显示:for (int i=0;iM1.tu;i+)coutM1.datai.row M1.datai.col M1.datai.item endl;五 实验结果分析六 体会与总结通过本次实验,我对有关稀疏矩阵及其三元组表的知识做了复习和巩固。在编程的过程中,遇到了不少问题,如一开始并没有输出显示,所以只能通过调试一步步看是否转置已成功,调试的过程也方便找到导致运行出错的位置,再进行改动调试, 最终解决了问题,同时也加深了对调试运行的理解。附录:程序代码#include using namespace std;const int MaxTerm=100;template struct elementint row,col;T item;template struct SparsMatrix element dataMaxTerm;int mu,nu,tu;void SparsT(SparsMatrix M1, SparsMatrix &M2)int i;/int j,temp;/*M2=M1;temp=M2.nu,M2.nu=M2.mu,M2.mu=temp;for(i=0;iM2.tu;i+)temp=M2.datai.row;M2.datai.row=M2.datai.col;M2.datai.col=temp;/.*/int *num=new intM1.nu;int *num1=new intM1.nu ;/存放累计个数int *num2=new intM1.nu; /已经存放的个数for(i=0;iM1.nu;i+)numi=0;num1i=0;num2i=0;for(i=0;iM1.tu;i+)numM1.datai.col-1+;num10=0;for(i=1;iM1.nu;i+)num1i=num1i-1+numi-1;M2.mu=M1.nu,M2.nu=M1.mu,M2.tu=M1.tu;for(i=0;iM1.tu;i+)M2.datanum1M1.datai.col-1+num2M1.datai.col-1.row=M1.datai.col;M2.datanum1M1.datai.col-1+num2M1.datai.col-1.col=M1.datai.row;M2.datanum1M1.datai.col-1+num2M1.datai.col-1.item=M1.datai.item;num2M1.datai.col-1+;int main()SparsMatrix M1,M2;M1.tu=7;M1.mu=5;M1.nu=6;M1.data0.col=1,M1.data0.row=1,M1.data0.item=15;M1.data1.col=4,M1.data1.row=1,M1.data1.item=22;M1.data2.col=6,M1.data2.row=1,M1.data2.item=-15;M1.data3.col=2,M1.data3.row=2,M1.data3.item=11;M1.data4.col=3,M1.data4.row=2,M1.data4.item=3;M1.data5.col=4,M1.data5.row=3,M1.data5.item=6;M1.data6.col=1,M1.data6.row=5,M1.data6.item=91; SparsT(M1,M2);cout原稀疏矩阵三元顺序图n;for (int i=0;iM1.tu;i+)coutM1.datai.row M1

温馨提示

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

评论

0/150

提交评论