数据结构课件第五章数组和广义表.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文档。上传文档
查看更多
数据结构课件第五章数组和广义表

*; 数组 (array) 是最常用的数据结构之一。几乎所有的程序设计语言都把数组类型设定为固有类型。; 数组是由下标和值组成的序对集合。在数组中,一旦给定下标,都存在一个与其相对应的值,这个值就称为数组元素。; 可以把二维数组看成是这样一个定长线性表:它的每个数据元素也是一个定长线性表。; 每个数据元素α j是一个列向量形式的线性表;; 5.1.2 数组的抽象类型定义;*; 由于内存储器的结构是一维的。一维数组可直接采用顺序存储。用一维的内存存储表示多维数组时,需按某种次序将数组中元素排成一线性序列,再将这个线性序列存放在一维的内存中,即数组的顺序存储结构表示。; 用顺序存储结构来存储数组中的元素,一定要按照某种次序将元素排成一个线性序列。有两种存储方式:;a21;a12;;(1)一维数组的地址计算:   设一维数组为??A=(a1,a2,…,ai,…,an),数组中每个元素占size个存储单元,则元素ai的存储地址为: Loc(A[i])=Loc(A[1])+(i-1)*size。; ⑵二维数组的地址计算   假设每个数据元素占 1 个存储单元,且以行序为主序的进行存储,则二维数组 A 中任一元素 aij 的存储位置可以由下面定位公式确定 LOC (A[i],[ j]) = LOC (A[1], [1]) + n*(i-1)+(j-1); ⑶三维数组的地址计算   三维数组A(1:r,1:m,1:n)。假设每个数据元素占size个存储单元,且以行序为主序的进行存储,首元素a111的地址为Loc(A[1][1][1]),求任意元素aijk的地址。   显然,ai11地址为 Loc(A[i][1][1])=Loc(A[1][1][1])+(i-1)*m*n,因为在该元素之前有i-1个m*n的二维数组。; 矩阵 (matrix) 是很多科学与工程计算问题中研究的数学对象。在数据结构中,我们感兴趣的不是矩阵本身,而是如何存储矩阵的元素而使矩阵的各种运算能够有效地进行。;特殊矩阵的压缩存储; 假若相同的元素或者零元素在矩阵中的分布有一定规律,则称特殊矩阵。特殊矩阵主要有 3 种:对称矩阵、三角矩阵、带状矩阵。; 若一个 n 阶矩阵 M 中的元素满足下述性质; 对于对称矩阵,可以为每一对对称元只分配一个存储空间,这样就可以将 n2 个元压缩存储到 n(n+1)/2 个元的空间中。; 三角矩阵分为下三角矩阵和上三角矩阵。所谓下(上) 三角矩阵是指矩阵的上 (下) 三角 (不包括对角线) 中的元均为常数 c 或为零的 n 阶矩阵。; 一个 n 阶方阵,若它的全部非零元素落在一个以对角线为中心的带状区域中,则称该矩阵为带状矩阵,或对角矩阵。这个带状区域若包含主对角线上下各 b 条对角线道上元素,那么,b 称为该带状矩阵的半带宽,或称该带状矩阵的带宽为 (2b+1)。; 在带状矩阵中,当 | i-j | b 时,aij = 0。该方阵共有 (2b+1)n-(b+1)b 个非零元素。;带状矩阵中最常见的是三对角带状矩阵。 ; 1.确定存储该矩阵所需的一维向量空间的大小   除第一行和最后一行只有两个元素外,其余各行均有3个非零元素,由此得到一维向量所需的空间大小为:3n-2 ;; 按照压缩存储的概念,只存储稀疏矩阵的非零元素。因此,除了存储非零元素的值 aij 之外,还必须同时记下非零元素所在矩阵的行 i 号和列 j号 。反之,一个三元组 ( i, j, aij ) 唯一确定了矩阵的一个非零元素。因此,稀疏矩阵可以由表示非零元的三元组及其矩阵的总的行列数唯一确定。;0 12 9 0 0 0 0;# define MAXSIZE 1000 // 假设非零元个数的最大值为 1000;0 12 9 0 0 0 0; (2) 利用三元组顺序表实现矩阵的转置运算;*; 使 b.data 中的三元组以 T 的行(M 的列)为主序依次排列的方法有如下两种:;① 算法思想; ;void TransposeTSMatrix ( TSMatrix A, TSMatrix *B ) { // 采用三元组表结构,求稀疏矩阵 A 的转置矩阵 B。在程序中, int i,j,k; // j 指示 B-data 中三元组的序号, // i 指示 A.data 中三元组的序号, // k指示A 的列号(即B 的行号);

文档评论(0)

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

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

1亿VIP精品文档

相关文档