2 3
1
1
4
一、广义表的类型定义
广义表的特性: 有次序性,有长度,有
深度,可共享,可递归。
D
A
B
C
f
a
E
e
b
c
d
11
广义表基本操作
1.GenListNode<ElemType> *First() const 初始条件:广义表已存在。 操作结果:返回广义表的第一个元素。 2.GenListNode<ElemType> *Next(GenListNode<ElemType> *elemPtr) const 初始条件:广义表已存在,elemPtr指向的广义表元素。 操作结果:返回elemPtr指向的广义表元素的后继 3.bool Empty() const 初始条件:广义表已存在。 操作结果:如广义表为空,则返回true,否则返回false
ref (a)头结点
nextLink
tag=ATOM(1)
atom (b)原子结点
nextLink
tag=LIST(2)
subLink (c)表结点
nextLink
15
A=(),B=(x, y, z),C=(B, y, z),D=(x,(y, z)),E=(x, E)
A B C D E 0 0 0 0 0 1 2 1 1 2 ∧ 1 2 1 2 x ∧ x 1 1 2 0 1 y y ∧ 1 y 1 z ∧ 1 1 z z ∧ ∧
本讲小结
重点: 1、广义表的基本概念 2、广义表的存储
难点: 1、广义表的递归算法
22
例1 求广义表的深度 P174 DepthHelp() 例2 复制广义表
P173 CopyHelp()