[数据结构]-10广义表

  • 什么是广义表?

n n 个元素 a 0 , a 1 , a 2 , . . . a n 1 ( n 0 ) a_0,a_1,a_2,...a_{n-1}(n\ge0) 组成的有序列表称为广义表

  • 什么是原子、子表?
    广义表中的元素类型可以不同,所以:
    • 若元素 a i a_i 为单个不可再分的元素,则称该元素为原子
    • 若元素 a i a_i 为广义表,则称该元素为子表

若用 L S = ( a 1 , a 2 , . . . a n ) ( n 0 ) LS=(a_1,a_2,...a_n)(n\ge 0) 表示一个广义表,则:

  • L S LS 表示广义表的名称

  • n n 表示广义表的长度

  • n = 0 n=0 时称为空表

  • 每个元素 a i a_i 可以为原子,也可以为一个广义表

  • 什么是表头、表尾?
    若广义表 L S = ( a 1 , a 2 , . . . a n ) ( n 0 ) LS=(a_1,a_2,...a_n)(n\ge 0) 非空,则

    • 第一个元素 a 1 a_1 称为表头。表头可以是原子也可以是子表;
    • 除表头外的其他元素组成的表称为表尾。即 t a i l ( L S ) = ( a 2 , . . . a n ) ( n 0 ) tail(LS)=(a_2,...a_n)(n\ge0) L S LS 的表尾。
  • 广义表示例
    若有 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 A 是一个空表,不含任何元素,其长度为 0。注意 A 1 = ( ) A_1 = () A 2 = ( ( ) ) A_2 = (()) 的不同:
      • A 1 = ( ) A_1 =() 是空表;
      • A 2 = ( ( ) ) A_2 = (()) 是长度为1的广义表,包含元素为一个空表的子表。
    • B B 是一个只含有单元素 e e 的表,其长度为 1;
    • C C 中有两个元素,第 1 个元素是单元素 a a ,第 2 个元素是子表 ( a , b , c ) (a,b,c) C C 的长度为 2;
    • D D 中有 3 个元素,其中每个元素又都是一个表, D D 的长度为 3;
    • E E 中只含有一个元素,该元素是一个表,该表中含 3 个元素,其中后两个元素又都是表。
  • 什么是广义表的长度和深度

    • 广义表最外层所包含的元素的个数称为广义表的长度
      • 如: C = ( a , ( b , c ) ) C=(a,(b,c)) 的长度为 2。
    • 广义表展开后所含括号的重数称为广义表的深度
      • 如: C = ( f , ( ( b , c ) , d ) , h ) C=(f,((b,c),d),h) 的深度为 3。

参考资料:
[1] 《数据结构(C语言版)》 严魏敏、吴伟民著
[2] 《数据结构(第3版)》 刘大有等著

发布了19 篇原创文章 · 获赞 0 · 访问量 756

猜你喜欢

转载自blog.csdn.net/qq_39953750/article/details/103896262