网站大量收购闲置独家精品文档,联系QQ:2885784924

沈阳工业大学信息科学与工程学院数据结构课件 第5章.ppt

沈阳工业大学信息科学与工程学院数据结构课件 第5章.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 数组和广义表 数组和广义表可以看成是线性表的推广,它们与前面讨论的线性结构不同,前面的线性结构是原子类型的,而数组和广义表的数据结构是结构化类型的,即元素的值是可以再分解的。 5.1数组的定义及抽象数据类型表示 5.1.1 数组的定义 数组(Array)是由一组类型相同的数据元素构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。数据元素可以是整数、实数等简单类型,也可以是数组、结构等构造类型。数组元素在数组中的相对位置由其下标来确定。 若数组只有一个下标,这样的数组称为一维数组,把数据元素的下标变成线性表中的位序,则一维数组就是一个线性表。 当一个数组的每一个数组元素都含有两个下标时,该数组称为二维数组。 可以把一个二维数组看成是每个数据元素都是相同类型的一维数组的一维数组,这样,也可以把二维数组看作为一个线性表。依此类推,一个三维数组可以看作是一个每个数据元素都是相同类型的二维数组的一维数组。 如图5-l 在C++语言中,一个二维数组可以定义为其分量类型为一维数组的一维数组类型,即 typedef ElemType Array2 [m][n]; 这个定义等价于 typedef ElemType Arrayl [n]; typedef Arrayl Array2[m]; 即定义了一个长度为m的线性表,表中的每个元素是一个长度为n的线性表。 一般地,可以借助线性表的概念递归地定义n维数组: 一个n维数组是一个元素可直接寻址的线性表 A = ( A1,A2, … ,An) 若Ai 是简单元素(不是数组), 则A是一维数组, 若Ai 是k-1维数组, 则A是k维数组, 其中i=1,2,…,n, k是大于0的整数。 数组的性质: (1)数组中的数据元素数量固定。一旦定义了一个数组,它的维数和维界就不能再改变,只能对数组进行存取元素和修改元素值的操作; (2)数组中的数据元素具有相同的数据类型; (3)数组中的每个数据元素都和一组唯一的下标对应; (4)数组是一种随机存储结构,可随机存取数组中的任意数据元素。 5.2数组的顺序存储与寻址 数组具有有序性,即数组中每个元素是有序的,并且元素之间的次序是不能改变的。对数组的操作除创建和销毁外,只有取数组中某一元素和修改某一元素的值的操作,没有插入和删除操作,因此,采用顺序存储结构表示数组是最好的方式。 由于计算机内存单元是一维的结构,而数组可能是一维的也可能是多维的,所以用一组连续存储单元存放数组的数据元素就有排列顺序的问题。 二维数组有两种存储方式:一种以列序为主序的存储方式,即先存储第一列数据元素,接着存储第二列数据元素,最后存储第n列数据元素,另一种是以行序为主序的存储方式,先存储第一行数据元素,接着存储第二行数据元素,最后存储第m行数据元素,如图5-2所示。 各种语言存储方式不同 只要给出一组下标便可求得相应数组元素的存储位置。下面以行序为主序的存储结构为例,说明如何由下标计算相应数组元素的存储地址。 假定每个数据元素占L个存储单元,则二维数组A中任意元素aij的存储地址由下式确定 LOC[i,j]=LOC[0,0]+( b2×i+j)×L 其中,LOC[i,j]是aij的存储地址;LOC[0,0]是a00的存储地址,即二维数组A的起始存储地址,也称为基址, b2是数组第二维的长度。 推广到一般情况,就可得到n维数组的数据元素存储地址的计算公式(知道即可) 5.3 特殊矩阵及其压缩存储 矩阵是一个二维数组,矩阵可以用行优先顺序或列优先顺序的方法顺序存放到内存中,但是,当矩阵的阶数很大时,将会占用较多的存储单元。而当里面的元素分布呈现某种规律时,从节约存储出发,可考虑若干元素共用一个存储单元,即进行压缩存储。压缩存储是指:为多个值相同的元素只分配一个存储空间,值为零的元素不分配空间。但是,在进行压缩存储时,虽然节约了存储单元,但要在压缩存储后直接访问数组元素, 还必须给出压缩前下标(二维数组的行、列)值和压缩后一维数组的下标值之间的变换公式。 5.3.1 特殊矩阵 特殊矩阵通常有以下几种: (1)对称矩阵:矩阵A是一个对称矩阵,当且仅当对于所有的i和j有A(i,j)= A(j,i)。 (2)上三角矩阵:矩阵A是一个上三角矩阵,当且仅当ij时,有A(i,j)=0, 即主对角线的左下方元素均为零元素的矩阵。 (3)下三角矩阵:矩阵A是一个下三角矩阵,当且仅当ij时,有A(i,j)=0,即主对角线的右上方元素均为零元素的矩阵。 (4)对角矩阵:对角矩阵是所有的非零元均集中在以对角线为中心的带状区域中的n阶方阵。即除了主对角线上和直接在对角线上、下

文档评论(0)

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

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

1亿VIP精品文档

相关文档