广义表Head和Tail的运用-----Tail(Head(Tail(((a,b),(c,d)))))-----

先科普一下广义表Head和Tail的作用

对于 非空广义表 来说,它的表头(即Head)既可能是单元素又可能是广义表。
例如:
Head( (a,b,c) = a ;
Head(((a),(b))=(a);
但其表尾(即Tail)一定是一个广义表,也就是说,广义表利用Tail提取后也一定还是一个广义表。这么说有点像废话,其实不然,这里面就隐藏着一个初学者很容易踩到的陷阱。
例如:
Tail((a,b,c) 的答案显然是(b,c)
Tail(((a,b),(c,d)) 的答案是否是(c,d)呢,答案是否定的。
它的答案是 ((c,d))。这就是开头为什么要强调广义表利用Tail提取后也一定还是一个广义表的原因。因为如果广义表中除去表头部分后的部分仍是个广义表的话,就容易让我们混淆,以为答案直接是后部分,而忽略了给它多加一对括号。

下面,让我们做一道题试试手吧!
Tail ( Head ( Tail ( ( (a,b),(c,d) ) ) ) )

答案:
Tail(((a,b),(c,d)))=((c,d))而非(c,d)
Head( ((c,d)) )=(c,d);
Tail((c,d))=(d)

原创文章 3 获赞 10 访问量 175

猜你喜欢

转载自blog.csdn.net/weixin_46485607/article/details/105889573
今日推荐