数组串树2011.ppt

  1. 1、本文档共221页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组串树2011

数据结构课程的内容 1.5 数组 1.5.1数组的定义及运算 数组(array)是每一个程序设计语言中都具有的一种常用数据类型,其中的每个数组元素必须具有相同的数据类型。在ANSI C语言中,数组是作为一种预定义数据类型由用户直接进行引用的。 数组是长度固定的线性表。所以,数组没有插入和删除操作,只有存储和查询操作。 每一个数组元素都由一个值和一组下标组成。数组的下标代表元素之间的关系。对每一组有定义的下标,都有一个与之相对应的值。 数组结构的特征:下标与值一一对应。 二维数组的特点: 数组的顺序存储表示和实现 补充:计算二维数组元素地址的通式 设一般的二维数组是A[c1..d1, c2..d2],这里c1,c2不一定是0。(子矩阵) 顺序存储方式:按低地址优先(或高地址优先)顺序存入一维数组。 1.5.3 矩阵的压缩存储 1.5.3稀疏矩阵的存储表示 稀疏矩阵的概念 绝大多数元素为零,只有极少数非零元素的矩阵,这种矩阵称为稀疏矩阵(sparse matrix)。 稀疏矩阵的压缩存储 例1 : 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。 法三:用带辅助向量的三元组表示。 方法: 增加2个辅助向量: ① 记录每行非0元素个数,用NUM(i)表示; ② 记录稀疏矩阵中每行第一个非0元素在三元组中的行号,用POS(i)表示。 稀疏矩阵的操作 方法1:压缩转置 方法2 快速转置 设计思路: 令:M中的列变量用col表示; num[ col ]:存放M中第col 列中非0元素个数, cpot[ col ]:存放M中第col列的第一个非0元素 在转置矩阵的三元组数组中的位置即b.data中待 计算的“恰当”位置所需参考点) 1.5.5 规则矩阵的压缩存储 规则(regular)矩阵:矩阵中的非零元素是有规律分布的。 规则矩阵的压缩存储:存储一个规则矩阵时,可以只存储矩阵中的非零元素部分,而不存储矩阵中的零元素部分。 下三角矩阵的压缩存储 对于nxn的下三角矩阵A,它的数据元素具有如下特点: A[i][j] ≠0,i≥j, 1≤i ≤n, 1 ≤j ≤n A[i][j]=0, i<j, 1≤i ≤n, 1 ≤j ≤n 即右上半三角中的全部元素为零,左下半三角中的全部元素为非零。要实现矩阵的压缩存储,可以只存储左下半三角中的全部非零元素。由于左下半三角中的全部非零元素只有n x(n+1)÷2个,因此可以使用一个一维数组B[1..n(n+1)/2]来存储这些非零元素。如果规定以行为主序来存放左下半三角中的全部非零元素,则矩阵中的元素A[i][j](i≥j)在一维数组B中的序号k(即B中的元素下标)与、j之间的关系如下: k=i× (I-1)÷2+j, 这里的i≥j, 1≤i ≤n, 1 ≤j ≤n 数据结构课程的内容 串(String) 练1:串是由 字符组成的序列,一般记为 。 2 串的表示和实现 定长顺序存储特点:用一组连续的存储单元来存放串,直接使用定长的字符数组来定义,数组的上界预先给出,故称为静态存储分配。 堆分配存储特点:仍用一组连续的存储单元来存放串,但存储空间是在程序执行过程中动态分配而得。 1.6.3串的链接表示法 与线性表一样,串也可以采用链式存储分配方式。用于存放串值的链表,每个结点有两个域:数据域data和链接域next。 其中: ● 数据域data:用于存放字符串中的结点,结点大小为数据域data中可存放的字 符个数 ●链接域next:用于存放指向下一个结点的指针,next域的大小取决于寻址范围 例如:如果结点大小为1,则每个结点对应一个字符,如图1.30所示。 链式存储特点 :用链表存储串值,易插入和删除。 串的模式匹配算法 补充:C语言中常用的串运算 数据结构课程的内容 1.7 树 我们前面介绍了线性表及其几种重要的特例,如栈、队列、数组和串。一般而言,线性结构只能用来描述数据元素间的线性顺序关系,很难反映元素之间的层次(或分支)关系。在本节中,我们将介绍一种非常重要的非线性数据结构,即树。这种非线性数据结构在计算机应用中得到许多实现,实际上一切具有层次关系的计算任务都可以使用树结构进行描述。树(tree)是一种重要的非线性(nonlinear)数据结构,它是数据元素(在树中称为结点)按分支关系组织起来的结构。树型结

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档