d 第5章 - 数组和广义表(2课时).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * 《数据结构》 李 凯 2013年11月 第五章 数组和广义表 Page * 5.1 数组 5.2 矩阵的压缩存储 5.3 广义表 内容 设置 Page * 5.1 数组 定义 一维数组:具有相同类型的一组元素的有限序列。 二维数组:元素为一维数组的一维数组。 …… N维数组是元素为(N-1)维数组的一维数组。 ⑴ 数组是一个静态变量,无插入、删除运算。 ⑵ 常见运算:计算元素地址、存取元素的值。 ⑶ 数组也是一种特殊的线性表(长度固定)。 ⑷ 二维数组中每个元素aij均属于两个向量:行、列向量,除边界外,每个元素有两个直接前趋和两个直接后继。同样,三维数组中每个元素amnt均属于三个向量,除边界外,每个元素有三个直接前趋和三个直接后继。依次类推,m维数组an1n2…nm属于m个向量,有m个直接前趋和m个直接后继。(从这一点看,数组又不是一种线性表) Page * 5.1 数组 存储 结构 顺序存储结构: (1) 行优先:逐行存储(E.g. PASCAL、C语言等); (2) 列优先:逐列存储(E.g. Fortran语言等); Page * 5.1 数组 存储 结构 (1) 行优先:逐行存储(E.g. PASCAL、C语言等); Page * 5.1 数组 存储 结构 (2) 列优先:逐列存储(E.g. Fortran语言等); Page * 5.2 矩阵的压缩存储 特殊 矩阵 当矩阵中非零元素呈某种规律分布(特殊矩阵),或出现大量零元素(稀疏矩阵)情况下,若用一般顺序存储(二维数组)会造成浪费。 方法: ⑴ 为多个相同的元素只分配一个存储单元; ⑵ 对零元素不分配存储空间. Page * 5.2 矩阵的压缩存储 特殊 矩阵 ⑴ 对称矩阵: 满足: a ij=a ji (0≤i, j≤n -1) 按行序为主序、存储元素总数: 为访问元素,必须找到i,j与k的关系 Page * 5.2 矩阵的压缩存储 特殊 矩阵 ⑵ 三角矩阵:矩阵的上(下)三角(不含对角线)中的元素均为常数的n阶矩阵。 按行序为主序、存储元素总数: 为访问元素,必须找到i,j与k的关系 Page * 5.2 矩阵的压缩存储 稀疏 矩阵 定义:元素大部分为0,且分布没有一定规律的矩阵。 压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值(三元组)。 M由{(0,1,12), (0,2,9), (2,0,-3), (2,5,14), (3,2,24), (4,1,18), (5,01,15), (5,3,-7) } 和矩阵维数 (6,7)唯一确定 Page * 5.2 矩阵的压缩存储 稀疏 矩阵 稀疏矩阵的压缩存储方法——三元组表 将三元组按行优先顺序排列,则得到结点为三元组的线性表。 Page * 5.2 矩阵的压缩存储 稀疏 矩阵 稀疏矩阵的压缩存储方法:三元组表 typedef struct { int i, j; //行、列下标 Element_Type v; //对应元素值 } tuple; Typedef struct { int mu, nu, tu; //行数、列数、非零元素个数 tuple data[maxnum]; } spmatrix; Page * 5.3 广义表 定义 定义:广义表L是由n个元素a1, a2, …, an组成的有限序列,记作L=(a1, a2, …, an),其中n≥0为表长度;当n=0时L为空表,记作L=( );元素ai(i=1,2,…,n)可以是不可分割的原子(用小写字母表示),也可以是广义表(用大写字母表示)。 例如: 深度 长度 ⑴ A=(a, b, c)

文档评论(0)

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

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

1亿VIP精品文档

相关文档