网站大量收购独家精品文档,联系QQ:2885784924

第3章多维数组和广义表.pptVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章多维数组和广义表

第三章 多维数组和广义表; 数组的两种顺序存储结构 以行序为主序(行优先顺序) 以列序为主序(列优先顺序);Loc( aij)=Loc(a11)+[(i-1)*n+(j-1)]*d ;??按列序为主序存放;3.2 矩阵的压缩存储;2. 三角矩阵(下三角); 三角矩阵(上三角);3 对角矩阵;3.2.2 特殊矩阵的抽象数据类型;3.2.3 特殊矩阵基本算法描述; ElemType GetMatrixElem (Matrix m, int i, int j); { //取特殊矩阵元素 if(m.type= =1) { //对称矩阵 if(i=j) return m.data[i?(i+1)/2+j]; else return m.data[j?(j+1)/2+i]; } else if(m.type= =2) { //下三角矩阵 if(i=j) return m.data[i?(i+1)/2+j)]; else return m.data[m.size?(m.size+1)/2]; } else { //上三角矩阵 if(j=i) return m.data[i?(2?m.size-i+1)/2+j-i]; else return m.data[m.size?(m.size+1)/2]; } };Void SetMatrixElem (Matrix m, int i, int j, ElemType v) { //赋特殊矩阵元素值 if(m.type= =1) { //对称矩阵 if(i=j) m.data[i?(i+1)/2+j]=v; else m.data[j?(j+1)/2+i]=v; } else if(m.type= =2) { //下三角矩阵 if(i=j) m.data[i?(i+1)/2+j)]=v; else m.data[m.size?(m.size+1)/2]=v; } else { //上三角矩阵 if(j=i) m.data[i?(2?m.size-i+1)/2+j-i]=v; else m.data[m.size?(m.size+1)/2]=v; } };Void ClearMatrix (Matrix m) //清除特殊矩阵 { m.type=-1; m.size=0; delete [ ] m.data; }; 稀疏矩阵的压缩存储原则:只存矩阵的行列数和每个非零元的行列下 标及其值。矩阵M可由{(0,1,12), (0,2,9), (2,0,-3), (2,5,14), (3,2,24), (4,1,18), (5,0,15), (5,3,-7) } 和矩阵行列数(6,7)唯一确定。;稀疏矩阵的压缩存储方法 1. 三元组表(顺序存储结构);;求转置矩阵 问题描述:已知一个稀疏矩阵的三元组表,求该矩阵转置矩阵的三元组表。 问题分析:转置矩阵B中的元素bij即为矩阵A中的元素aji。B的行数等于A的列数,B的列数等于A的行数 ,将A三元组中的i和j互换后拷贝到B三元组中,重排B三元组次序,使其中元素以i(行)为主序。;1;SMatrix *TransMat(SMatrix *a) //求矩阵a转置矩阵b { int col, n; SMatrix *b=new SMatrix[1]; //为转置矩阵B申请内存 b?m=a?n; b?n=a?m; b?t=a?t; if(b?t= =0) return b; for(col=1, n=1; col=a?m; col++) //按A的列次序拷贝 for(int k=1; k=a?t; k++) //扫描整个三元组 if( a?data[k].col= =col ) //拷贝第col列的三元组 { b?data[n].col=a?data[k].row; b?data[n].row=a?data[k].col; b?data[n].val=a?data[k].val;

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档