欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构与算法特殊矩阵和稀疏矩阵.doc

    • 资源ID:3019501       资源大小:102.09KB        全文页数:8页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构与算法特殊矩阵和稀疏矩阵.doc

    -/常熟理工学院数据结构与算法实验指导与报告书_2017-2018_学年 第_1_ 学期专 业: 物联网工程 实验名称: 特殊矩阵和稀疏矩阵 实验地点: N6-210 指导教师: 聂盼红 计算机科学与工程学院2017实验五 特殊矩阵和稀疏矩阵【实验目的】1、掌握数组的结构类型(静态的内存空间配置);通过数组的引用下标转换成该数据在内存中的地址;2、掌握对称矩阵的压缩存储表示;3、掌握稀疏矩阵的压缩存储-三元组表表示,以及稀疏矩阵的转置算法。【实验学时】2学时【实验预习】回答以下问题:1、什么是对称矩阵?写出对称矩阵压缩存储sak与aij之间的对应关系。若n阶矩阵A中的元素满足下述性质:aij=aji,则称为n阶对称矩阵。sak与矩阵元素aij之间存在着一一对应的关系: 若i>=j,k=i*(i+1)/2+j; 若i<j,k=j*(j+1)/2+i。 0<=i, j<=n-1 0<=k<=n*(n+1)/2-12、什么是稀疏矩阵?稀疏矩阵的三元组表表示。假设在mn的矩阵中,有t个元素不为零,且tmn,则称此矩阵为稀疏矩阵。稀疏矩阵的三元组成表示: 矩阵的行数、列数和非零元个数【实验内容和要求】1、编写程序exp5_1.c,将对称矩阵进行压缩存储。(1)对称矩阵数组元素Aij转换成为以行为主的一维数组sak,请描述k与ij的关系。(注意C程序中,i,j,k均从0开始)(2)调试程序与运行。对称矩阵存储下三角部分即i>=j。对称矩阵为 3,9,1,4,7 9,5,2,5,8 1,2,5,2,4 4,5,2,1,7 7,8,4,7,9参考程序如下:#include<stdio.h>#define N 5int main() int upperNN= 3,9,1,4,7, 9,5,2,5,8, 1,2,5,2,4, 4,5,2,1,7, 7,8,4,7,9 ; /*对称矩阵*/ int rowMajor15; /*存储转换数据后以行为主的数组*/ int Index; /*数组的索引值*/ int i,j; printf("Two dimensional upper triangular array:n"); for (i=0; i<N; i+) /*输出对称矩阵*/ for(j=0; j<N; j+) printf("%3d",upperij); printf("n"); for(i=0; i<N; i+) /*进行压缩存储*/ for(j=0; j<N; j+) if(i>=j) /*下三角元素进行存储*/ Index=i*(i+1)/2+j; /*ij与index的转换*/ rowMajorIndex=upperij; printf("nRow Major one dimensional array:n"); for(i=0; i<15; i+) /*输出转换后的一维数组*/ printf("%3d", rowMajori); printf("n"); return 1;2、完成程序exp5_2.c,实现稀疏矩阵的三元组表存储及稀疏矩阵的转置。调试并给出结果: 补充完整程序,运行稀疏矩阵的一般转置算法; 完成稀疏矩阵的快速转置算法,并修改主函数的转置调用算法,验证快速转置算法的正确性。exp5_2.c部分代码如下:#include<stdio.h>#define MAXSIZE 20 /*非零元素个数最大值*/typedef int ElemType;typedef struct int i,j; ElemType e;Triple;typedef struct Triple dataMAXSIZE+1; /*三元组表,data0不用*/ int mu,nu,tu;/*矩阵的行数、列数、非零元个数*/TSMatrix;void TransposeSMatrix(TSMatrix *T,TSMatrix *M);/*一般转置算法*/void FastTransposeSMatrix(TSMatrix *M,TSMatrix *T);/*快速转置算法*/int main() int i,j,k,q,col,p; int temp67=0,12,9,0,0,0,0, /*稀疏矩阵*/ 0,0,0,0,0,0,0, -3,0,0,0,0,14,0, 0,0,24,0,0,0,0, 0,18,0,0,0,0,0, 15,0,0,-7,0,0,0, ; TSMatrix T,M; M.mu=6; M.nu=7; M.tu=0; k=1; for (i=0;i< M.mu;i+) /*转换为稀疏矩阵的三元组表示*/ for (j=0;j< M.nu;j+) if (tempij!=0) M.datak.i=i+1; M.datak.j=j+1; M.datak.e=tempij; k+; M.tu=k-1; FastTransposeSMatrix(&M,&T); /*调用转置算法进行转置*/ /*输出转置结果*/ printf("稀疏矩阵:n"); for (i=0;i< M.mu;i+) /*转换为稀疏矩阵的三元组表示*/ for (j=0;j< M.nu;j+) printf("%3d",tempij); printf("n"); printf("转置前M三元组表:nmutnuttun"); printf("%dt%dt%dn",M.mu,M.nu,M.tu); printf("nitjten"); for (i=1;i<=M.tu;i+) printf("%dt%dt%dn",M.datai.i,M.datai.j,M.datai.e); printf("转置后T三元组表:nmutnuttun"); printf("%dt%dt%dn",T.mu,T.nu,T.tu); printf("nitjten"); for (i=1;i<=T.tu;i+) printf("%dt%dt%dn",T.datai.i,T.datai.j,T.datai.e);/*稀疏矩阵的转置*/void TransposeSMatrix(TSMatrix *M,TSMatrix *T) int q,col,p; T->mu=M->nu; T->nu=M->mu; T->tu=M->tu; if (T->tu) q=1; for (col=1;col<=M->nu;+col) for (p=1;p<=M->tu;+p) if (M->datap.j=col) T->dataq.i=M->datap.j; T->dataq.j=M->datap.i; T->dataq.e=M->datap.e; +q; /*稀疏矩阵的快速转置算法*/void FastTransposeSMatrix(TSMatrix *M,TSMatrix *T) int t,q,col,p,numMAXSIZE,cpotMAXSIZE; T->mu=M->nu; T->nu=M->mu; T->tu=M->tu; if (T->tu) /*快速转置过程的实现,请补充代码*/ for(col=1;col<=M->mu;+col) numcol=0; /num数组的初始化 for(t=1;t<=M->tu;+t) +numM->datat.j; /求M中每一列的非零元素的个数 cpot1=1; /求col列中第一个非零元素在T中序号 for( col=2;col<=M->nu;+col) /求cpot数组的值 cpotcol=cpotcol-1+numcol-1; for( p=1;p<=M->tu;+p) /进行转置 col=M->datap.j; q=cpotcol; T->dataq.i=M->datap.j; T->dataq.j=M->datap.i; T->dataq.e=M->datap.e; +cpotcol; 【实验小结】 本实验掌握了对称矩阵的压缩存储表示,稀疏矩阵的压缩存储-三元组表表示,以及稀疏矩阵的转置算法。明白了可以改变矩阵的储存方式来节省内存空间,今后可以利用这一思想来节省内存。

    注意事项

    本文(数据结构与算法特殊矩阵和稀疏矩阵.doc)为本站会员(小**)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开