- 什么是广义表?
由 n n n 个元素 a 0 , a 1 , a 2 , . . . a n − 1 ( n ≥ 0 ) a_0,a_1,a_2,...a_{n-1}(n\ge0) a0,a1,a2,...an−1(n≥0) 组成的有序列表称为广义表
- 什么是原子、子表?
广义表中的元素类型可以不同,所以:- 若元素 a i a_i ai 为单个不可再分的元素,则称该元素为原子
- 若元素 a i a_i ai 为广义表,则称该元素为子表
若用 L S = ( a 1 , a 2 , . . . a n ) ( n ≥ 0 ) LS=(a_1,a_2,...a_n)(n\ge 0) LS=(a1,a2,...an)(n≥0) 表示一个广义表,则:
-
L S LS LS 表示广义表的名称
-
n n n 表示广义表的长度
-
当 n = 0 n=0 n=0 时称为空表
-
每个元素 a i a_i ai 可以为原子,也可以为一个广义表
-
什么是表头、表尾?
若广义表 L S = ( a 1 , a 2 , . . . a n ) ( n ≥ 0 ) LS=(a_1,a_2,...a_n)(n\ge 0) LS=(a1,a2,...an)(n≥0) 非空,则- 第一个元素 a 1 a_1 a1 称为表头。表头可以是原子也可以是子表;
- 除表头外的其他元素组成的表称为表尾。即 t a i l ( L S ) = ( a 2 , . . . a n ) ( n ≥ 0 ) tail(LS)=(a_2,...a_n)(n\ge0) tail(LS)=(a2,...an)(n≥0) 为 L S LS LS 的表尾。
-
广义表示例
若有 A , B , C , D , E A,B,C,D,E A,B,C,D,E 5 个广义表,其元素如下:
A = ( ) B = ( e ) C = ( a , ( b , c , d ) ) D = ( A , B , C ) = ( ( ) , ( e ) , ( a , ( b , c , d ) ) ) E = ( ( a , ( a , b ) , ( ( a , b ) , c ) ) ) A=() \\ B=(e) \\ C=(a,(b,c,d)) \\ D=(A,B,C)=((),(e),(a,(b,c,d))) \\ E=((a,(a,b),((a,b),c))) A=()B=(e)C=(a,(b,c,d))D=(A,B,C)=((),(e),(a,(b,c,d)))E=((a,(a,b),((a,b),c)))
则:-
A
A
A 是一个空表,不含任何元素,其长度为 0。注意
A
1
=
(
)
A_1 = ()
A1=() 和
A
2
=
(
(
)
)
A_2 = (())
A2=(()) 的不同:
- A 1 = ( ) A_1 =() A1=() 是空表;
- A 2 = ( ( ) ) A_2 = (()) A2=(()) 是长度为1的广义表,包含元素为一个空表的子表。
- B B B 是一个只含有单元素 e e e 的表,其长度为 1;
- C C C 中有两个元素,第 1 个元素是单元素 a a a,第 2 个元素是子表 ( a , b , c ) (a,b,c) (a,b,c), C C C 的长度为 2;
- D D D 中有 3 个元素,其中每个元素又都是一个表, D D D 的长度为 3;
- E E E 中只含有一个元素,该元素是一个表,该表中含 3 个元素,其中后两个元素又都是表。
-
A
A
A 是一个空表,不含任何元素,其长度为 0。注意
A
1
=
(
)
A_1 = ()
A1=() 和
A
2
=
(
(
)
)
A_2 = (())
A2=(()) 的不同:
-
什么是广义表的长度和深度
- 广义表最外层所包含的元素的个数称为广义表的长度
- 如: C = ( a , ( b , c ) ) C=(a,(b,c)) C=(a,(b,c)) 的长度为 2。
- 广义表展开后所含括号的重数称为广义表的深度
- 如: C = ( f , ( ( b , c ) , d ) , h ) C=(f,((b,c),d),h) C=(f,((b,c),d),h) 的深度为 3。
- 广义表最外层所包含的元素的个数称为广义表的长度
参考资料:
[1] 《数据结构(C语言版)》 严魏敏、吴伟民著
[2] 《数据结构(第3版)》 刘大有等著