【精选】第五章 多维数组和广义表.ppt

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

第五章 多维数组和广义表 一、课程内容    5.1 多维数组    5.2 矩阵的压缩存储   5.3 广义表的概念 二、学习目的与要求     本章的目的是介绍多维数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏矩阵的压缩存储方法及广义表的概念。本章重点是熟悉多维数组的存储方式、矩阵的压缩存储方式、广义表的定义及其求表头和表尾的运算,难点是稀疏矩阵的压缩存储表示下实现的算法。 5.1 多维数组 1. 数组的定义    数组是由一组类型相同的数据元素构造而成的。数组元素在数组中的相对位置是由下标确定的。 一维数组、二维数组。 二维数组可称为矩阵。 a11 a12 … a1n Amn= a21 a22 … a2n … … … … am1 am2 … amn 图5-1 二维数组结构 m维数组An1n2…nm的每个元素ai1i2…im都属于m个向量,最多可以有m个直接前趋和m个直接后继。 如把数据元素的下标顺序变成线性表的序号,则一维数组就是一个线性表。 数组虽然是线性表的特例,但关于数组的运算与一般线性表的运算不同,数组的主要运算有两种: (1)给定一组下标,存取相应的数据元素; (2)给定一组下标,修改相应的数据元素。 2. 数组的顺序存储结构    数组的顺序存储结构指的是用一组连续的存储单元依次存放数组元素。    (1) 行优先顺序     行优先顺序:将数组元素按行向量排列,行优先顺序规定为先排最右的下标,从右向左,最后排最左下标。  例:写出A[3][4]、A[2][3][4]元素按行优先顺序。   (2) 列优先顺序     列优先顺序:将数组元素按列向量排列,列优先顺序规定为先排最左下标,从左向右,最后 排最右下标。 二维数组Amn按“行优先顺序”存储在内存中,假设每个元素占d个存储单元,则aij的地址计算函数为:LOC(aij)=LOC(a11)+[(i-1)×n+j-1]×d    对应C语言的二维数组:DataType A[m][n]; 数组A[m][n]的两个下标的下界均为0,上界分别为m-1、n-1,每个数据元素占k个存储单元,二维数组中任一元素a[i,j]的存储位置可由下列公式确定。 loc[i,j]=loc[0,0]+(i* n + j ) * k 其中,loc[0,0]是A[0][0]的存储位置,loc[i,j]是A[i][j]的存储位置。这个式子确定了C语言的二维数组元素的位置和下标的关系。 例:int a[3][5]; a[2][3]= 5.2 矩阵的压缩存储 对于矩阵,关心的是如何存储它的元素,使矩阵的各种运算能有效地进行。 对于阶数很高的矩阵,同时在矩阵中有许多值相同的元素或者零元素,为了节省存储,可对这类矩阵进行压缩存储。 压缩存储:即为多个相同的非零元素只分配一个存储空间,对零元素不分配空间。 存储元素为:{1,5,0,1,8,9,3,0,2,5,7,0,6,1,3},共15个。将这些元素存放在一个向量sa[0…n(n+1)/2-1]中。 怎样通过元素下标在sa中找到该元素的值? 2. 三角矩阵 以主对角线划分,三角矩阵有上三角和下三角两种。上三角矩阵的下三角(不包括主角线)中的元素均为常数c。下三角矩阵正好相反,它的主对角线上方均为常数c。在多数情况下,三角矩阵的常数c为零。 上三角矩阵 下三角矩阵 上三角矩阵中,sa[k]和aij的对应关系是: 下三角矩阵中,sa[k]和aij的对应关系是: 3. 对角矩阵 对角矩阵中,所有的非零元素集中在以主对角线为中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零。如图所示: 对角矩阵可按行优先顺序或对角线的顺序,将其压缩存储到一个向量中,并且也能找到每个非零元素和向量下标的对应关系。 5.2.2 稀疏矩阵 设矩阵Amn中有s个非零元素,若s远远小于矩阵元素的总数(即s<<m×n),则称A为稀疏矩阵。 当用三元组来表示非零元时,对稀疏矩阵进行压缩存储通常

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档