第四章数组串和广义表.pptVIP

  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 数组 数组(array)表示n(n1)个具有相同数据类型的数据元素的有序集合。 4.1.1二维数组 数组中数据元素由一个数据值和一个(组)下标确定。下标是数组中元素相互区分的标识。使用一个下标区分其中元素的数组称为一维数组。使用两个以上下标的数组称为多维数组。常用的多维数组是二维数组,通常称为矩阵。 A3*4的阵列形式表示: 4.1.2 矩阵的顺序表示与实现 行序优先存储: 4.1.3 特殊矩阵压缩存储 1.对称矩阵 n阶方阵,沿主对角线对称位置上的元素相等,即aij=aji。 主对角线:由元素aii组成的数列 4.1.3 特殊矩阵压缩存储 1.对称矩阵2 对称矩阵中任意元素与其对应的一维数组下标k的计算公式: 4.1.3 特殊矩阵压缩存储2 2.三角矩阵 n阶方阵,沿主对角线以上的元素全为零。 上三角矩阵、下三角矩阵 4.1.3 特殊矩阵压缩存储2 2.三角矩阵2 按行序压缩存储下三角矩阵,元素下标(i,j)与对应的一维数组下标k映射公式为: k=(i+1)*i/2+j (i=j) 4.1.3 特殊矩阵压缩存储3 3.对角矩阵 n阶方阵,沿主对角线上下若干对角线上有非零元素,其他全为零。 带宽:主对角线上下各d条对角线上有非零元,则共有2d+1条对角线有非零元,称为带宽。 4.1.3 特殊矩阵压缩存储3 3.对角矩阵2 按行序压缩存储三对角矩阵,元素下标(i,j)与对应的一维数组下标k映射公式为: k=3*i-1+(j-i+1)=2*i+j 4.1.4 稀疏矩阵压缩存储 稀疏矩阵是指矩阵中的非零元很少,大部分是零元素,且非零元的分布没有规律。如下矩阵: 4.1.4 稀疏矩阵压缩存储 1.三元组表表示法 在存储稀疏矩阵中的非零元时,为了描述一个非零元素,需要元素本身的值和行标、列标三方面的信息,这些信息的组合就称为三元组。 1.三元组表表示法2 用C语言定义三元组表的结构类型如下: 1.三元组表表示法3 (1)建立稀疏矩阵的三元组表1 算法4-1 建立并输出稀疏矩阵的三元组表 00 SMatrix CreateSMatrix() /* 创建稀疏矩阵M */ 01 { 02 SMatrix M; 03 int i; 04 printf(\n请输入矩阵的行数:); 05 scanf(%d,M.mu); 06 printf(\n请输入矩阵的列数:); 07 scanf(%d,M.nu); 08 printf(\n请输入矩阵的非零元素个数:); 09 scanf(%d,M.tu); 10 for(i = 0; i M.tu; i++) 11 { 12 printf(请按行序顺序输入第%d个非零元素所在的行(0~%d), 列(0~%d),元素值:(逗号分隔)\n, i,M.mu-1,M.nu-1); 13 scanf(%d,%d,%d,M.data[i].row,M.data[i].col,M.data[i].value); 14 } 15 return M; 16 } 1.三元组表表示法3 (1)建立稀疏矩阵的三元组表2 算法分析: 建立并输出稀疏矩阵的三元组表,首先要给出三元组表的类型定义,然后编写建立函数和输出函数,最后在主程序中调用,见算法4-1。程序第00-16行为建立函数,程序先定义了三元组变量M,再通过键盘输入稀疏矩阵的信息:行数、列数、非零元个数,由程序第04-09行完成。程序第10行的for语句循环M.tu次,输入每个非零元的信息,填入到相应的三元组的对应域中,即完成三元组表的建立。 输出函数(程序第17-24行)则按每行输出一个三元组的形式输出三元组的信息。 主程序(程序第25-30行)通过调用建立函数和输出函数完成三元组表的建立于输出。 1.三元组表表示法4 (2)稀疏矩阵的转置 第一种方法: 假设稀疏矩阵M有n列,转置后的稀疏矩阵为T。需要对M的三元组表进行n趟扫描,第i(0≤i≤n-1)趟扫描将M中所有col值为i的三元组存放到T的三元组表中,具体方法是:取出该三元组,交换row值和col值,连同value值,作为新的三元组存放到T的三元组表中(程序第13-15行)。这样就将M中的第i列的非零元转置到了T中的第i行,并且能保证T的三元组表是按行序

文档评论(0)

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

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

1亿VIP精品文档

相关文档