数组和广义表数据结构范例.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 数组和广义表 一、基本概念 1、数组的定义:n(n1)个相同数据类型的数据元素a0,a1,…,an-1有限序列,且该序列存储在一块地址连续的内存单元中。数组的定义类同于采用顺序存储结构的线性表。 在一维数组中,一旦a0的存储地址确定,每个数据元素的存储单元k就确定,ai的存储地址LOC(ai)就可以由以下公式求出: LOC(ai) =LOC(a0)+i*k (0≤ i≤ n) ① 一维数组的任一数据元素的存储地址可直接计算得到,所以一维数组中的任一数据元素可直接存取,故一维数组是一种随机存储结构。 对于一个m行n列的二维数组Am×n,有 ② 可以认为Am×n=A,A是这样的一维数组:A=(a0,a1,…,ai,…,am-1), ③ 其中,ai=(ai,0,ai,1,…,ai,n-1) (0≤j≤m) 一个二维数组可以看做是每个数据元素都是相同类型的一维数组的一维数组。依此类推,任何多维数组都可以看成是一个线性表,这时线性表中的每个数据元素也是一个线性表。多维数组是线性表的推广。 推广到d维数组,不妨将其看作是一个由d-1维数组作为数据元素的线性表。 数组的性质: 数组中的数据元素数目固定。一旦定义了一个数组,其数据元素不再有增减变化。 数组中的数据元素具有相同的数据类型。 数组中的每个数据元素都和一组唯一的下标值对应。 数组是一种随机存储结构。可随机存取数组中的任意数据元素。 2、数组的基本操作 一旦建立了数组,结构中的数据元素个数和元素之间的关系就不再发生改变,所以不会有元素的插入和删除操作,其基本运算主要是元素的取值和复制操作。 二、数组的存储结构 对于一维数组来说,其存储结构是线性的,关系式为① 。 对二维数组来说,由于计算机的存储结构是线性的,如何用线性结构存放二维数组元素就有一个行/列问题。对于式②的m行n列的二维数组Am×n ,当满足式③时,我们说是以行为主序的存储方式,即先存储第0行,然后紧接着存储第1行,……,最后是m-1行。此时,二维数组的线性排列次序为:a0,0,a0,1,…,a0,n-1,a1,0,…,a1,n-1,…,am-1,0,…,am-1,n-1。 在C、Pascal和BASIC等大多数程序设计语言中采用的是以行序为主序的存储方式。在ForTran等少数语言中采用的是以列序为主序的存储方式。 二维数组中任一数据元素ai,j的存储地址: LOC( ai,j )=LOC(a0,0)+(i*n+j) (其中n为列数) ④ 【例1】对二维数组float a[5][4],计算: (1)数组a中的数组元素数目; (2)若数组a中的起始地址为2000,且每个数组元素的长度为32位,数组元素a[3][2]的内存地址。 【例2】有m名学生,每人考n门功课,试写出求任一课程总分数的数据结构和算法。 三、特殊矩阵的压缩 特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵。为节省空间,特别是在高阶矩阵的情况下,可以利用特殊矩阵的规律,对它们进行压缩,即,使多个相同的非零元素共享一个存储单元,对零元素不分配存储空间。 特殊矩阵的主要形式:对称矩阵、对角矩阵等,它们都是方阵。 1、对称矩阵的压缩 如果一个n阶方阵A中的元素关于对角线对称ai,j=aj,I (0=I,j=n-1) 存储时可只存储对称矩阵中上三角和下三角中的元素,使得对称矩阵的元素共享一个存储空间。这样就可以把n2个元素压缩到n(n+1)/2个元素的空间中。 以行序为主序存储其下三角(包括对角线)的元素。假设一维数组sa[0…n(n+1)/2]作为n阶矩阵A的存储结构,在sa中只存储对称矩阵A的下三角元素,则A中任一元素Aij和sa[k]之间存在着如下对应关系: 有些非对称矩阵也可以借用此方法存储,如n阶下(上)三角矩阵。 所谓n阶下(上)三角矩阵,是指矩阵的上(下)三角(不包括对角线)中的元素均为常数C或0的n阶方阵。设以一维数组sb[0…n(n+1)/2]作为n阶三角矩阵B的存储结构,则B中任一元素bij和sb[k]之间存在如下对应关系: 2、对角矩阵的压缩 若一个n阶方阵满足其所有非零元素都集中在以主对角线为中心的带状区域中,则则称其为n阶对角矩阵。一个m(1=mn)条非零元素的n阶对角矩阵如下图所示: 一个有m条非零元素的n阶对角矩阵A的非零元素总数u为: 四、稀疏矩阵 一个阶数较大的矩阵中的非零元素的个数s相对于矩阵元素总个数t十分小时,即st时,称该矩阵为稀疏矩阵。 特点:非零元素的分布没有任何规律。 稀疏矩阵的十字链表表

文档评论(0)

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

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

1亿VIP精品文档

相关文档