广义表

定义

广义表是n(n>=0)个元素a1, a2, a3, … , an的有限序列,其中ai或者是原子项,或者是一个广义表。通常记作LS = (a1, a2, a3, … , an)。LS是广义表的名字,n为它的长度。若ai是广义表,则称它为LS的子表。若广义表LS(n>=1)非空,则a1是LS的表头,其余元素组成的表(a2, a3, … , an)称为LS的表尾。

  • A=()
    表A是一个空表,其长度为零。
  • B=(e)
    表B只有一个原子e,B的长度为1。
  • C=(a,(b,c))
    表C的长度为2,两个元素分别为原子a和子表(b,c)。
  • D=(A,B,C)
    表D的长度为3,三个元素都是广义表
  • E=(a, E)
    表E是一个递归的表,长度为2,相当于一个无限的广义表E=(a, (a, (a, (a, … ))))。

重要性质

⑴ 广义表是一种多层次的数据结构,其元素可以是单元素,也可以是子表,而子表的元素还可以是子表。
⑵ 广义表可以是递归表。广义表的定义并没有限制元素的递归,即广义表也可以是其自身的子表。
⑶ 广义表可以为其他表所共享。例如,表A、表B、表C是表D的共享子表。

重要操作

广义表有两个重要的基本操作,即取表头操作(Head或GetHead)和取表尾操作(Tail或GetTail)。
根据广义表的表头、表尾的定义可知,对于任意一个非空的列表,其表头可能是单元素也可能是列表,而表尾必为列表

  • GetHead((a,b,c))=a
  • GetTail ((a,b,c,d))=(b,c,d)
  • GetHead(((a,b),(d)))=(a,b)
  • GetTail(((a,b),(d)))=((d))
  • GetHead(GetTail(((a,b),(c,d))))=(c,d)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值