广义表的一些概念

本文首发于我的个人博客Suixin’s Blog
原文: https://suixinblog.cn/2019/02/generalized-list.html  作者: Suixin

基本概念

广义表(Lists,又称列表)是线性表的推广。广义表是 n ( n ⩾ 0 ) n(n\geqslant 0) n(n0)个元素 a 1 , a 2 , a 3 , … , a n a_1,a_2,a_3,…,a_n a1,a2,a3,,an的有限序列,其中 a i a_i ai或者是原子项,或者是一个广义表。

  • 元素:广义表的元素可以是原子,也可以是广义表,也可以为空。
  • 表头:若广义表 L S ( n ⩾ 1 ) LS(n\geqslant 1) LSn1)非空,则 a 1 a_1 a1是LS的表头。表头可以是单元素值,也可以是表。空的广义表不能求表头。
  • 表尾:若广义表 L S ( n ⩾ 1 ) LS(n\geqslant 1) LSn1)非空,则除去表头后剩下的元素组成的表是LS的表尾。表尾一定是表。空的广义表不能求表尾。

例子

  1. A = ( ) A=() A=()——A是一个空表,其长度为零。
  2. B = ( e ) B=(e) B=(e)——表B只有一个原子 e e e,其长度为1。
  3. C = ( a , ( b , c , d ) ) C=(a,(b,c,d)) C=(a,(b,c,d))——表C的长度为2,两个元素分别为原子 a a a和子表 ( b , c , d ) (b,c,d) (b,c,d),其表尾为 ( ( b , c , d ) ) ((b,c,d)) ((b,c,d))
  4. D = ( A , B , C ) D=(A,B,C) D=(ABC)——表D的长度为3,三个元素都是广义表。显然,将子表的值代入后,则有 D = ( ( ) , ( e ) , ( a , ( b , c , d ) ) ) D=((),(e),(a,(b,c,d))) D=((),(e),(a,(b,c,d)))
  5. E = ( a , E ) E=(a,E) E=(a,E)——这是一个递归的表,它的长度为2,E相当于一个无限的广义表 E = ( a , ( a , ( a , ( a , … ) ) ) ) E=(a,(a,(a,(a,…)))) E=(a,(a,(a,(a,)))).

考点

  1. 广义表是0个或多个单因素或子表组成的有限序列,广义表可以是自身的子表,广义表的长度 n ⩾ 0 n\geqslant 0 n0,所以可以为空表。广义表的同级元素(直属于同一个表中的各元素)具有线性关系。
  2. 广义表的表头为空,并不代表该广义表为空表。广义表 ( ) () () ( ( ) ) (()) (())不同。前者是长度为0的空表,对其不能做求表头和表尾的运算;而后者是长度为1的非空表(只不过该表中惟一的一个元素是空表),对其可进行分解,得到的表头和表尾均是空表 ( ) () ()
  3. 已知广义表 L S = ( ( a , b , c ) , ( d , e , f ) ) LS=((a,b,c),(d,e,f)) LS((a,b,c),(d,e,f)),运用 h e a d head head t a i l tail tail函数取出LS中原子 e e e的运算是 h e a d ( t a i l ( h e a d ( t a i l ( L S ) ) ) head(tail(head(tail(LS))) head(tail(head(tail(LS)))。根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。也就是说,广义表的 h e a d head head操作,取出的元素是什么,那么结果就是什么。但是 t a i l tail tail操作取出的元素外必须加一个表——“ ( ) () ()“。 t a i l ( L S ) = ( ( d , e , f ) ) tail(LS)=((d,e,f)) tail(LS)((d,e,f)) h e a d ( t a i l ( L S ) ) = ( d , e , f ) head(tail(LS))=(d,e,f) head(tail(LS))=(d,e,f) t a i l ( h e a d ( t a i l ( L S ) ) ) = ( e , f ) tail(head(tail(LS)))=(e,f) tail(head(tail(LS)))=(e,f) h e a d ( t a i l ( h e a d ( t a i l ( L S ) ) ) ) = e head(tail(head(tail(LS))))=e head(tail(head(tail(LS))))=e
  4. 二维以上的数组其实是一种特殊的广义表。
  5. 在(非空)广义表中:1、表头 h e a d head head可以是原子或者一个表;2、表尾 t a i l tail tail一定是一个表;3.广义表难以用顺序存储结构;4.广义表可以是一个多层次的结构。

参考

数据结构:广义表

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值