V第二十二讲(广义表的逻辑结构与存储结构)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广义表的逻辑结构与存储结构
数据结构与算法
---第二十二讲
北方民族大学 计算机科学与工程学院 王伦津 研究员
22,广义表的基本概念,逻辑结构 ,广义表的基本概念, 与存储结构, 与存储结构,基本存储方法
掌握广义表的相关概念,基本特征, 掌握广义表的相关概念,基本特征,基本 掌握广义表的存储结构, 操作及其应用 ,掌握广义表的存储结构, 链式结构的高级语言描述, 链式结构的高级语言描述,广义表对象模 型及其接口
数组的广义表描述
一维数组 a a ,b ,c b c 对应单元素表 L=(a,b,c)
a1 a2 a3 二维数组 a1,a2,a3,b1,b2,b3,c1,c2,c3 b1 b2 b3 L=((a1,a2,a3),(b1,b2,b3),(c1,c2,c3)) c1 c2 c3
三维数组 a11,a12,a13,a21,a22,a23,a31,a32,a33, b11,b12,b13,b21,b22,b23,b31,b32,b33, c11,c12,c13,c21,c22,c23,c31,c32,c33
深度: 的深度 的深度Depth(Ls)递归地定义为: 递归地定义为: 深度:Ls的深度 递归地定义为 0 :若Ls为单元素 为单元素 Depth(Ls) = 1 :若Ls为空表 为空表 1 + MAXi (Depth(αi)) :其它情况 从定义知,广义表的深度, 从定义知,广义表的深度,相当于广义表表达式中括号的 最大嵌套层数.这里的定义,为了递归, 最大嵌套层数.这里的定义,为了递归,我们将单元素也看 作表. 作表.
22, 22, 广义表
广义表是一种特殊的结构, 广义表是一种特殊的结构,它兼有线 性表, 图等结构的特点. 性表,树,图等结构的特点.从各层元素 各自具有的线性关系讲, 各自具有的线性关系讲,它应该是线性表 的拓广;从元素的分层方面讲, 的拓广;从元素的分层方面讲,它有树结 构的特点, 构的特点,但从元素的递归性和共享性等 方面讲,它应该属于图结构.总之, 方面讲,它应该属于图结构.总之,它是 一种更为复杂的非线性结构. 一种更为复杂的非线性结构.
对任一表Ls,我们称Ls为 的第 的第1层 层号为1) 层:对任一表 ,我们称 为Ls的第 层(层号为 ), Ls的各直接元素均为 的第二层元素(层号均为 ); 的各直接元素均为Ls的第二层元素 的各直接元素均为 的第二层元素(层号均为2) 对任意其他元素x, 对任意其他元素 , 它的直接元素的层号就等于它的 层号加1. 层号相同者称为同层结点 在这个定义中, 同层结点. 层号加 . 层号相同者称为 同层结点 . 在这个定义中 , 我们将不同位置(不同出现) 我们将不同位置(不同出现)的相同元素也看作是不 同元素,因此,同一个对象,就可能有不同的层号. 同元素,因此,同一个对象,就可能有不同的层号. 显然, 的深度等于其中层号最大的元素的层号 的深度等于其中层号最大的元素的层号. 显然,Ls的深度等于其中层号最大的元素的层号. 系列广义表:由于广义表的元素往往也是广义表, 系列广义表:由于广义表的元素往往也是广义表,所 以需要一同考虑. 以需要一同考虑.它们称可追溯到同属于某一广义表 的各广义表的全体为一个广义表系列( 的各广义表的全体为一个广义表系列 ( 或系列广义 表).
22.1.2 广义表逻辑图
为了表达广义表的逻辑结构, 为了表达广义表的逻辑结构,这里用一种图 形来形象地表示广义表,称为广义表图. 形来形象地表示广义表,称为广义表图.设广 义表为L(A1,A2, …, An),则它的广义表图形成 义表为 , 方法为: 方法为: 画一结点,标为L,称其为广义表L的根 的根; 画一结点,标为 ,称其为广义表 的根; 对每个A 若其为单元素,则画一个结点, 对每个Ai,若其为单元素,则画一个结点, 标为Ai的值(或值的名称),称该结点为终结 标为 的值(或值的名称),称该结点为终结 ), 结点,其即为A 的根; 结点,其即为 i的根; 对每个A 若其为子表,则按该规则画出A 对每个 i,若其为子表,则按该规则画出 i 的广义表图; 的广义表图; 的根到各A 从L的根到各 i的根分别画一条边,将各 i的 的根到各 的根分别画一条边,将各A 根连在一起. 根连在一起.
L=(((a11,a12,a13),(a21,a22,a23),(a31,a32,a33)), ((b11,b12,b13),(b21,b22,b23),(b31,b32,b33)), ((c11,c12,c13),(c21,c22,c23),(c31,c32,c33)))
二叉树的广义表表示
1 2 4 5 3
广义表: 广义表:(1(2(*,4(5,*)), 3))
树根为第一层, 树根为第一层,每一 层用一组括号括起来, 层用一组括号括起来, 子树为空时使用*号 子树为空时使用 号 替代, 替代,括号的嵌套层 次,表示元素所在树 中的层次. 中的层次.
树的广义表描述
1 2 4 5 6 7 8 3 12 9 10 11
表头: 的第1个元素为 的表头. 表头:称Ls的第 个元素为 的表头. 的第 个元素为Ls的表头 表尾: 中除去表头后其余元素构成的表为表尾. 表尾:称Ls中除去表头后其余元素构成的表为表尾. 中除去表头后其余元素构成的表为表尾 显然,表尾一定是表,但表头不一定. 显然,表尾一定是表,但表头不一定. 递归表: 若表Ls中某成员含有自己 中某成员含有自己(即 ,则称Ls为递归表 为递归表. 递归表 若表 中某成员含有自己 即Ls),则称 为递归表.
wenku.baidu.com
广义表也常简称为表.通常,广义表记为(称 广义表也常简称为表. 通常, 广义表记为( 为广义表表达式) 为广义表表达式): Ls=(α1,α2, …, αn) α α 其中,每个α 称为Ls的一个直接元素 也称α 的一个直接元素( 其中 , 每个 αi称为 的一个直接元素 ( 也称 αi直属 Ls) , 其或为数据对象成员 , 或为满足本定义的 ) 其或为数据对象成员, 广义表.例如,下面的 广义表.例如, L = ((a,b), c, (d, (e)) ) 就是一个合法的广义表表达式. 就是一个合法的广义表表达式. 由上列定义知,若不考虑α 的内部结构, 由上列定义知,若不考虑αi的内部结构,则Ls 是一种线性表.但若考虑到α 的内部结构, 是一种线性表.但若考虑到αi的内部结构,Ls 可 能是非常复杂的. 能是非常复杂的. 下面给出几个相关概念. 下面给出几个相关概念.
22.1 广义表的逻辑结构
22.1.1 基本概念
广义表(Lists)是一个二元组 是一个二元组 广义表 Lists=(D, R) 其中, 其中, D={di | i=1, 2, …, n; n≥0; di∈D0或属于 ≥ 某广义表, 是数据对象} 某广义表,D0是数据对象 R={LR} LR={<di-1, di> | di∈D, 1≤i≤n} ≤≤ 递归定义, 递归定义,表中有表
目 录
22.1 广义表的逻辑结构 22.4 广义表的应用 22.1.1 基本概念 22.4.1 多元多项式的表示 22.4.2 层次结构的表示 22.1.2 广义表逻辑图 22.1.3 广义表的遍历 22.1.4 基本特性 22.1.5 基本操作 22.2 广义表的存贮结构 22.2.1 基本存储方法 22.2.2 链式结构的高级语言描述 22.3 广义表对象模型 广义表对象模型* 22.3.1 广义表元素接口 22.3.2 广义表接口
L=(1(2(4,(6(5,7)),8),12, 3(9(10),11)))
L = ((a,b), c, (d, (e)) ) L = (A(a,b), c, B(d, C(e)) )
L A c b d B C
概念中的例题 显示如何构建 广义表图
a
e
图22-1 给出了广义表图的一个例子. 22- 给出了广义表图的一个例子. 显然, 广义表图中画出了广义表的所有结点. 显然 , 广义表图中画出了广义表的所有结点 . 图中结 点之间的边表示" 包含/属于 " 关系, 即若结点A到 B有 点之间的边表示 " 包含 属于" 关系 , 即若结点 到 有 属于 则表示B是 的子表之一 的子表之一( 包含 包含B) 边,则表示 是A的子表之一(A包含 ). 广义表图与树相似, 广义表图与树相似,只是 由于存在共享元素, 由于存在共享元素,使得 广义表图中某些结点 的"父亲"不唯一. 父亲"不唯一. B a b c d e A C D E L
下面的叙述中, 我们用大写字母表示具体的广义表, 下面的叙述中 , 我们用大写字母表示具体的广义表 , 用小写字 母代表数据对象的成员(单元素) 在同一个广义表系列中, 母代表数据对象的成员 ( 单元素 ) . 在同一个广义表系列中 , 相同 字母表示同一对象. 字母表示同一对象. 下面给出了一个广义表系列. 下面给出了一个广义表系列. ① A=( ):空表,无头,无尾,长度为 ,深度为 :空表,无头,无尾,长度为0,深度为1. ② B=(a,b,c):单元素表,头为 ,尾为 :单元素表,头为a,尾为(b,c),长度为 ,深度为 ,长度为3,深度为1. ③ C=(a, (b, c, a) ):非单元素表,头为 ,尾为 ((b,c,d)),长度为 , :非单元素表,头为a, ,长度为2, 深度为2. 深度为 ④ D=(B, ((a,b), c ) ):非单元素表,头为 ,尾为 ((a,b),c)) ),长度 :非单元素表,头为B,尾为( , 为2,深度为 ,深度为3. ⑤ E=(a, E):非单元素表,头为 , 尾为 ,长度为 ,深度为∞, :非单元素表,头为a, 尾为(E),长度为2,深度为∞ 事实上, 是个递归表. 事实上,E=(a, E) = (a, (a (,… ) ) )是个递归表. 是个递归表 有时,为了强调广义表名称,可将表名写在表的左括号前面, 有时,为了强调广义表名称,可将表名写在表的左括号前面 , 如上例中的D可写为 可写为: 如上例中的 可写为: D( B(a, b, c), F( G(a, b), c) )
子表:若某广义表 的某元素结点 的某元素结点a本身也是一个广 子表:若某广义表L的某元素结点 本身也是一个广 义表,则称a为广义表 的子表. 为广义表L的子表 义表,则称 为广义表 的子表. 长度:我们仍然称Ls中的元素个数 即各α 的个数, 中的元素个数( 长度:我们仍然称 中的元素个数(即各 i的个数, 不计α 内部的元素个数)为广义表Ls的长度, 不计 i内部的元素个数)为广义表 的长度,它与 线性表的长度的概念是相同的. 线性表的长度的概念是相同的. 单元素,单元素表:若数据元素为非表元素(即数 单元素,单元素表:若数据元素为非表元素( 据对象成员,或说简单元素 如基本数据类型, 简单元素, 据对象成员,或说简单元素,如基本数据类型,结 记录等) 则称其为单元素 单元素; 构 /记录等 ) , 则称其为 单元素 ; 若 Ls中的元素均 记录等 中的元素均 单元素,则称其为单元素表 单元素表. 为单元素,则称其为单元素表. 空表:表内无元素(长度为 )的表称为空表. 空表:表内无元素(长度为0)的表称为空表.
L(A(B(a,b)), C(B(a,b), c), D(c,d,e), E(e) )
例如, 22- 所示的广义表图,深度优先遍历结果为: 例如,图22-1所示的广义表图,深度优先遍历结果为: LA B a b C c D d e E 注意对访问过的点加标记 如果只访问单元素,则结果为: 如果只访问单元素,则结果为: abcde 22- 所示的广义表图,广度优先遍历结果为: 图22-1所示的广义表图,广度优先遍历结果为: LA C D E B c d e a b 如果只访问单元素,则结果为: 如果只访问单元素,则结果为: cdeab 有时侯,将共享元素做为不同出现列出. 有时侯,将共享元素做为不同出现列出. 当然,也可以规定使共享元素不重复出现.例如, 当然,也可以规定使共享元素不重复出现.例如,对广义表 L=A(a, B(c, C(a, b), d), E(e,F(f)) ) 深度优先(前序)结果为(共享元素按不同元素列出) 深度优先(前序)结果为(共享元素按不同元素列出): a, c, a, b, d, e, f
广义表L(见下式) 图 22-1 广义表 (见下式)逻辑图 L(A(B(a,b)), C(B(a,b), c), D(c,d,e), E(e) )
22.1.3 广义表的遍历
对广义表的遍历,与图结构类似, 对广义表的遍历,与图结构类似, 也有两种方式: 也有两种方式:深度优先遍历和广度 优先遍历.具体遍历方式是把广义表 优先遍历. 对应的广义表图看作图结构, 对应的广义表图看作图结构,在该图 结构上进行相应的遍历. 结构上进行相应的遍历.
数据结构与算法
---第二十二讲
北方民族大学 计算机科学与工程学院 王伦津 研究员
22,广义表的基本概念,逻辑结构 ,广义表的基本概念, 与存储结构, 与存储结构,基本存储方法
掌握广义表的相关概念,基本特征, 掌握广义表的相关概念,基本特征,基本 掌握广义表的存储结构, 操作及其应用 ,掌握广义表的存储结构, 链式结构的高级语言描述, 链式结构的高级语言描述,广义表对象模 型及其接口
数组的广义表描述
一维数组 a a ,b ,c b c 对应单元素表 L=(a,b,c)
a1 a2 a3 二维数组 a1,a2,a3,b1,b2,b3,c1,c2,c3 b1 b2 b3 L=((a1,a2,a3),(b1,b2,b3),(c1,c2,c3)) c1 c2 c3
三维数组 a11,a12,a13,a21,a22,a23,a31,a32,a33, b11,b12,b13,b21,b22,b23,b31,b32,b33, c11,c12,c13,c21,c22,c23,c31,c32,c33
深度: 的深度 的深度Depth(Ls)递归地定义为: 递归地定义为: 深度:Ls的深度 递归地定义为 0 :若Ls为单元素 为单元素 Depth(Ls) = 1 :若Ls为空表 为空表 1 + MAXi (Depth(αi)) :其它情况 从定义知,广义表的深度, 从定义知,广义表的深度,相当于广义表表达式中括号的 最大嵌套层数.这里的定义,为了递归, 最大嵌套层数.这里的定义,为了递归,我们将单元素也看 作表. 作表.
22, 22, 广义表
广义表是一种特殊的结构, 广义表是一种特殊的结构,它兼有线 性表, 图等结构的特点. 性表,树,图等结构的特点.从各层元素 各自具有的线性关系讲, 各自具有的线性关系讲,它应该是线性表 的拓广;从元素的分层方面讲, 的拓广;从元素的分层方面讲,它有树结 构的特点, 构的特点,但从元素的递归性和共享性等 方面讲,它应该属于图结构.总之, 方面讲,它应该属于图结构.总之,它是 一种更为复杂的非线性结构. 一种更为复杂的非线性结构.
对任一表Ls,我们称Ls为 的第 的第1层 层号为1) 层:对任一表 ,我们称 为Ls的第 层(层号为 ), Ls的各直接元素均为 的第二层元素(层号均为 ); 的各直接元素均为Ls的第二层元素 的各直接元素均为 的第二层元素(层号均为2) 对任意其他元素x, 对任意其他元素 , 它的直接元素的层号就等于它的 层号加1. 层号相同者称为同层结点 在这个定义中, 同层结点. 层号加 . 层号相同者称为 同层结点 . 在这个定义中 , 我们将不同位置(不同出现) 我们将不同位置(不同出现)的相同元素也看作是不 同元素,因此,同一个对象,就可能有不同的层号. 同元素,因此,同一个对象,就可能有不同的层号. 显然, 的深度等于其中层号最大的元素的层号 的深度等于其中层号最大的元素的层号. 显然,Ls的深度等于其中层号最大的元素的层号. 系列广义表:由于广义表的元素往往也是广义表, 系列广义表:由于广义表的元素往往也是广义表,所 以需要一同考虑. 以需要一同考虑.它们称可追溯到同属于某一广义表 的各广义表的全体为一个广义表系列( 的各广义表的全体为一个广义表系列 ( 或系列广义 表).
22.1.2 广义表逻辑图
为了表达广义表的逻辑结构, 为了表达广义表的逻辑结构,这里用一种图 形来形象地表示广义表,称为广义表图. 形来形象地表示广义表,称为广义表图.设广 义表为L(A1,A2, …, An),则它的广义表图形成 义表为 , 方法为: 方法为: 画一结点,标为L,称其为广义表L的根 的根; 画一结点,标为 ,称其为广义表 的根; 对每个A 若其为单元素,则画一个结点, 对每个Ai,若其为单元素,则画一个结点, 标为Ai的值(或值的名称),称该结点为终结 标为 的值(或值的名称),称该结点为终结 ), 结点,其即为A 的根; 结点,其即为 i的根; 对每个A 若其为子表,则按该规则画出A 对每个 i,若其为子表,则按该规则画出 i 的广义表图; 的广义表图; 的根到各A 从L的根到各 i的根分别画一条边,将各 i的 的根到各 的根分别画一条边,将各A 根连在一起. 根连在一起.
L=(((a11,a12,a13),(a21,a22,a23),(a31,a32,a33)), ((b11,b12,b13),(b21,b22,b23),(b31,b32,b33)), ((c11,c12,c13),(c21,c22,c23),(c31,c32,c33)))
二叉树的广义表表示
1 2 4 5 3
广义表: 广义表:(1(2(*,4(5,*)), 3))
树根为第一层, 树根为第一层,每一 层用一组括号括起来, 层用一组括号括起来, 子树为空时使用*号 子树为空时使用 号 替代, 替代,括号的嵌套层 次,表示元素所在树 中的层次. 中的层次.
树的广义表描述
1 2 4 5 6 7 8 3 12 9 10 11
表头: 的第1个元素为 的表头. 表头:称Ls的第 个元素为 的表头. 的第 个元素为Ls的表头 表尾: 中除去表头后其余元素构成的表为表尾. 表尾:称Ls中除去表头后其余元素构成的表为表尾. 中除去表头后其余元素构成的表为表尾 显然,表尾一定是表,但表头不一定. 显然,表尾一定是表,但表头不一定. 递归表: 若表Ls中某成员含有自己 中某成员含有自己(即 ,则称Ls为递归表 为递归表. 递归表 若表 中某成员含有自己 即Ls),则称 为递归表.
wenku.baidu.com
广义表也常简称为表.通常,广义表记为(称 广义表也常简称为表. 通常, 广义表记为( 为广义表表达式) 为广义表表达式): Ls=(α1,α2, …, αn) α α 其中,每个α 称为Ls的一个直接元素 也称α 的一个直接元素( 其中 , 每个 αi称为 的一个直接元素 ( 也称 αi直属 Ls) , 其或为数据对象成员 , 或为满足本定义的 ) 其或为数据对象成员, 广义表.例如,下面的 广义表.例如, L = ((a,b), c, (d, (e)) ) 就是一个合法的广义表表达式. 就是一个合法的广义表表达式. 由上列定义知,若不考虑α 的内部结构, 由上列定义知,若不考虑αi的内部结构,则Ls 是一种线性表.但若考虑到α 的内部结构, 是一种线性表.但若考虑到αi的内部结构,Ls 可 能是非常复杂的. 能是非常复杂的. 下面给出几个相关概念. 下面给出几个相关概念.
22.1 广义表的逻辑结构
22.1.1 基本概念
广义表(Lists)是一个二元组 是一个二元组 广义表 Lists=(D, R) 其中, 其中, D={di | i=1, 2, …, n; n≥0; di∈D0或属于 ≥ 某广义表, 是数据对象} 某广义表,D0是数据对象 R={LR} LR={<di-1, di> | di∈D, 1≤i≤n} ≤≤ 递归定义, 递归定义,表中有表
目 录
22.1 广义表的逻辑结构 22.4 广义表的应用 22.1.1 基本概念 22.4.1 多元多项式的表示 22.4.2 层次结构的表示 22.1.2 广义表逻辑图 22.1.3 广义表的遍历 22.1.4 基本特性 22.1.5 基本操作 22.2 广义表的存贮结构 22.2.1 基本存储方法 22.2.2 链式结构的高级语言描述 22.3 广义表对象模型 广义表对象模型* 22.3.1 广义表元素接口 22.3.2 广义表接口
L=(1(2(4,(6(5,7)),8),12, 3(9(10),11)))
L = ((a,b), c, (d, (e)) ) L = (A(a,b), c, B(d, C(e)) )
L A c b d B C
概念中的例题 显示如何构建 广义表图
a
e
图22-1 给出了广义表图的一个例子. 22- 给出了广义表图的一个例子. 显然, 广义表图中画出了广义表的所有结点. 显然 , 广义表图中画出了广义表的所有结点 . 图中结 点之间的边表示" 包含/属于 " 关系, 即若结点A到 B有 点之间的边表示 " 包含 属于" 关系 , 即若结点 到 有 属于 则表示B是 的子表之一 的子表之一( 包含 包含B) 边,则表示 是A的子表之一(A包含 ). 广义表图与树相似, 广义表图与树相似,只是 由于存在共享元素, 由于存在共享元素,使得 广义表图中某些结点 的"父亲"不唯一. 父亲"不唯一. B a b c d e A C D E L
下面的叙述中, 我们用大写字母表示具体的广义表, 下面的叙述中 , 我们用大写字母表示具体的广义表 , 用小写字 母代表数据对象的成员(单元素) 在同一个广义表系列中, 母代表数据对象的成员 ( 单元素 ) . 在同一个广义表系列中 , 相同 字母表示同一对象. 字母表示同一对象. 下面给出了一个广义表系列. 下面给出了一个广义表系列. ① A=( ):空表,无头,无尾,长度为 ,深度为 :空表,无头,无尾,长度为0,深度为1. ② B=(a,b,c):单元素表,头为 ,尾为 :单元素表,头为a,尾为(b,c),长度为 ,深度为 ,长度为3,深度为1. ③ C=(a, (b, c, a) ):非单元素表,头为 ,尾为 ((b,c,d)),长度为 , :非单元素表,头为a, ,长度为2, 深度为2. 深度为 ④ D=(B, ((a,b), c ) ):非单元素表,头为 ,尾为 ((a,b),c)) ),长度 :非单元素表,头为B,尾为( , 为2,深度为 ,深度为3. ⑤ E=(a, E):非单元素表,头为 , 尾为 ,长度为 ,深度为∞, :非单元素表,头为a, 尾为(E),长度为2,深度为∞ 事实上, 是个递归表. 事实上,E=(a, E) = (a, (a (,… ) ) )是个递归表. 是个递归表 有时,为了强调广义表名称,可将表名写在表的左括号前面, 有时,为了强调广义表名称,可将表名写在表的左括号前面 , 如上例中的D可写为 可写为: 如上例中的 可写为: D( B(a, b, c), F( G(a, b), c) )
子表:若某广义表 的某元素结点 的某元素结点a本身也是一个广 子表:若某广义表L的某元素结点 本身也是一个广 义表,则称a为广义表 的子表. 为广义表L的子表 义表,则称 为广义表 的子表. 长度:我们仍然称Ls中的元素个数 即各α 的个数, 中的元素个数( 长度:我们仍然称 中的元素个数(即各 i的个数, 不计α 内部的元素个数)为广义表Ls的长度, 不计 i内部的元素个数)为广义表 的长度,它与 线性表的长度的概念是相同的. 线性表的长度的概念是相同的. 单元素,单元素表:若数据元素为非表元素(即数 单元素,单元素表:若数据元素为非表元素( 据对象成员,或说简单元素 如基本数据类型, 简单元素, 据对象成员,或说简单元素,如基本数据类型,结 记录等) 则称其为单元素 单元素; 构 /记录等 ) , 则称其为 单元素 ; 若 Ls中的元素均 记录等 中的元素均 单元素,则称其为单元素表 单元素表. 为单元素,则称其为单元素表. 空表:表内无元素(长度为 )的表称为空表. 空表:表内无元素(长度为0)的表称为空表.
L(A(B(a,b)), C(B(a,b), c), D(c,d,e), E(e) )
例如, 22- 所示的广义表图,深度优先遍历结果为: 例如,图22-1所示的广义表图,深度优先遍历结果为: LA B a b C c D d e E 注意对访问过的点加标记 如果只访问单元素,则结果为: 如果只访问单元素,则结果为: abcde 22- 所示的广义表图,广度优先遍历结果为: 图22-1所示的广义表图,广度优先遍历结果为: LA C D E B c d e a b 如果只访问单元素,则结果为: 如果只访问单元素,则结果为: cdeab 有时侯,将共享元素做为不同出现列出. 有时侯,将共享元素做为不同出现列出. 当然,也可以规定使共享元素不重复出现.例如, 当然,也可以规定使共享元素不重复出现.例如,对广义表 L=A(a, B(c, C(a, b), d), E(e,F(f)) ) 深度优先(前序)结果为(共享元素按不同元素列出) 深度优先(前序)结果为(共享元素按不同元素列出): a, c, a, b, d, e, f
广义表L(见下式) 图 22-1 广义表 (见下式)逻辑图 L(A(B(a,b)), C(B(a,b), c), D(c,d,e), E(e) )
22.1.3 广义表的遍历
对广义表的遍历,与图结构类似, 对广义表的遍历,与图结构类似, 也有两种方式: 也有两种方式:深度优先遍历和广度 优先遍历.具体遍历方式是把广义表 优先遍历. 对应的广义表图看作图结构, 对应的广义表图看作图结构,在该图 结构上进行相应的遍历. 结构上进行相应的遍历.