数据结构ch5数组和广义表.ppt

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

5.1 数组的定义 二维数组的特点: N维数组的数据类型定义 5.2 数组的顺序存储表示和实现 补充:计算二维数组元素地址的通式 设一般的二维数组是A[c1..d1, c2..d2],这里c1,c2不一定是0或1 例3:已知二维数组Am,m按行存储的元素地址公式是: Loc(aij)= Loc(a11)+[(i-1)*m+(j-1)]*K , 请问按列存储的公式相同吗? 答:尽管是方阵,但公式仍不同。应为: Loc(aij)=Loc(a11)+[(j-1)*m+(i-1)]*K 若是N维数组,其中任一元素的地址该如何计算? Loc(j1,j2,…jn)=LOC(0,0,…0)+ N维数组的顺序存储表示(见教材P93) 5.3 矩阵的压缩存储 对称矩阵 三角矩阵 一、稀疏矩阵的压缩存储 例1 : 三元素组表中的每个结点对应于稀疏矩阵的一个非零元素,它包含有三个数据项,分别表示该元素的 、 和 。 法2:用十字链表表示 法4:用带辅助向量的三元组表示。 方法: 增加2个辅助向量: ① 记录每行非0元素个数,用NUM(i)表示; ② 记录稀疏矩阵中每行第一个非0元素在三元组中的行号,用POS(i)表示。 二、稀疏矩阵的操作 令:M矩阵中的列变量用col表示; num[ col ]:存放M中第col 列中非0元素个数 cpos[ col ]:存放M中第col列的第一个非0元素的位置 (即b.data中待计算的“恰当”位置所需参考点) 第5章 数组和广义表(Arrays Lists) 5.4 广义表的定义 2、特点: 有次序性 有长度 有深度 可递归 可共享 介绍两种特殊的基本操作: 5.5 广义表的存储结构 本章小结 ① 元素的值并非原子类型,可以再分解,表中元素也是一个线性表(即广义的线性表)。 ② 所有数据元素仍属同一数据类型。 5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.4 广义表的定义 5.5 广义表的存储结构 数组和广义表的特点:一种特殊的线性表 广义表是线性表的推广,也称为列表(lists) 记为: LS = ( a1 , a2 , ……, an ) 广义表名 表头(Head) 表尾 (Tail) 1、定义: ①用小写字母表示原子类型,用大写字母表示列表。 ②第一个元素是表头,而其余元素组成的表称为表尾; n是表长 在广义表中约定: 特别提示:任何一个非空表,表头可能是原子,也可能是列表;但表尾一定是列表! 一个直接前驱和一个直接后继 =表中元素个数 =表中括号的重数 自己可以作为自己的子表 可以为其他广义表所共享 讨论:广义表与线性表的区别和联系? 广义表中元素既可以是原子类型,也可以是列表; 当每个元素都为原子且类型相同时,就是线性表。 E=(a,E)=(a,(a,E))= (a,(a,(a,…….))),E为递归表 1)A =( ) 2)B = ( e ) 3)C =( a ,( b , c , d ) ) 4)D=( A , B ,C ) 5)E=(a, E) 例1:求下列广义表的长度。 n=0,因为A是空表 n=1,表中元素e是原子 n=2,a 为原子,(b,c,d)为子表 n=3,3个元素都是子表 n=2,a 为原子,E为子表 D=(A,B,C)=(( ),(e),(a,(b,c,d))),共享表 A B D C e a b c d ② A=( a , (b, A) ) 例2:试用图形表示下列广义表. (设 代表子表, 代表元素) e ① D=(A,B,C)=( ( ),(e),( a, (b,c,d) ) ) A a b ①的长度为3, 深度为3 ②的长度为2, 深度为∞ 深度=括号的重数= 结点的层数 广义表的抽象数据类型定义见教材P107-108 ADT Glist{ 数据对象:D={ ei | i=1,2,……,n;n≥0; ei∈AtomSet或Glist } 数据关系:R1={ ei-1,ei | ei-1,ei ∈D, 2≤i ≤ n } 基本操作: InitGList(L); 操作结果:创建空的广义表L. CreateGList(L,S); 初始条件:S是广义表的书写形式串。 操作结果:由S创建广义表L. …… }ADT Glist Get

文档评论(0)

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

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

1亿VIP精品文档

相关文档