数据结构(C语言描述) -马秋菊 第4章数组.pptVIP

数据结构(C语言描述) -马秋菊 第4章数组.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章学习目标 ????? 掌握多维数组的概念以及在计算机中的存储表示; ???????掌握对称矩阵、三角矩阵、对角矩阵的压缩存储表示及地址运算公式; ??????? 稀疏矩阵在计算机中的存储表示及基本运算的实现; 广义表的逻辑结构和基本运算。 4.1 数组 4.1.1 数组的基本概念 4.2 特殊矩阵的压缩存储 A[i][j]和SA[k]之间对应关系: 若i≥j,则A[i][j]在下三角矩阵中,A[i][j]之前的i行一共有1+2+…+ i =i×(i+1)/2个元素,在第i行上,A[i][j]之前有j个元素,因此有: k=i×(i+1)/2+j 若ij,则A[i][j]在上三角矩阵中。因为A[i][j]=A[j][i],所以只要交换上述对应关系式中的i和j即可得到: k=j×(j+1)/2+i (0≤kn×(n+1)/2 ) 若令I=max(i,j),J=min(i,j),得到: k=I×(I+1)/2+J (0≤kn×(n+1)/2 ) 因此:LOC(A[i][j])=LOC(SA[k])=LOC(SA[0])+k×L = LOC(SA[0])+[I×(I+1)/2+J] ×L 4.2.2 三角矩阵 三角矩阵中的重复元素c可共享一个存储空间,其余的元素正好有n×(n+1)/2个,因此,三角矩阵可压缩存储到向量SA[0..n(n+1)/2]中,其中c存放在最后一个分量中。 SA[k] 与A[i][j]的对应关系为: 4.2.4 稀疏矩阵 (1)按照矩阵M的列序进行转置 然后求出cpot[1..n]各数据值;最后依次扫描A-data,当扫描到一个col列元素时,直接将其存放在B-data的cpot[col]位置上, cpot[col]加1,cpot[col]中始终是下一个col列元素在B.data中的位置。 算法复杂度分析:这个算法中有四个循环,分别执行n,t,n-1,t次,因此总的计算量是O(n+t),当t和m×n等数量级时,该算法执行的时间是O(m×n);存储空间比前一个算法多了两个向量:num[1..n]和 cpot[1..n]。 2.建立稀疏矩阵M的十字链表 scanf(%d%d%d,m,n,t); M-mu=m; M-nu=n;M-tu=t; for(k=1;k=m;k++) M-rhead[k]=NULL; for(k=1;k=n;k++) M-chead[k]=NULL; printf(please input row, col,v); scanf(%d%d%d,i,j,e); /*输入矩阵的值*/ while(i!=0) { p=(QLNode *)malloc(sizeof(QLNode)); p-row=i;p-col=j;p-v=e; p-right=p-down=NULL; if(M-rhead[i]==NULL) M-rhead[i]=p; else{ q=M-rhead[i]; while((q-right)(q-right-colj)) q=q-right; p-right=q-right;q-right=p; /*插入第i行*/ } if(M-chead[j]==NULL) M-chead[j]=p; else{ q=M-chead[j]; while((q-down)(q-down-rowi)) q=q-down; /*插入第j行*/ p-down=q-down;q-down=p; } printf(please input row, col,v); scanf(%d%d%d,i,j,e); } return M; }/* CreateSMatrix_OL*/ 4.3 广义表 4.3.2 广义表的基本运算 小 结 C=(a,B(b,c,d))——深度2。 D=(B(b,c,d),y)——深度2。 E=(A(),B(b,c,d),C(a,B(b,c,d)))深度3。 F=(F(F(F(…),a),a),a)——深度∞。 当广义表LS非空时,称第一个元素a1为LS的表头(head),称其余元素组成的表(a2,…,ai,…,an)为LS的表尾(tail)。 2.广义表的性质 ⑴广义表是一种多层次的数据结构。广义表的元素可以是

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档