根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。
也就是说,广义表的head操作,取出的元素是什么,那么结果就是什么。但是tail操作取出的元素外必须加一个表——“ ()“
举一个简单的列子:已知广义表LS=((a,b,c),(d,e,f)),如果需要取出这个e这个元素,那么使用tail和head如何将这个取出来。
利用上面说的,tail取出来的始终是一个表,即使只有一个简单的一个元素,tail取出来的也是一个表,而head取出来的可以是一个元素也可以是一个表。
解:
tail(LS) = ((d,e,f))
head(tail(LS)) = (d,e,f)
tail(head(tail(LS))) = (e,f)//无论如何都会加上这个()括号
head(tail(head(tail(LS)))) = e//head可以去除单个元素
广义表最基本的操作:取表头head(LS)与取表尾tail(LS)
例:LS=(a,(b,c,d))
head(LS)=a
tail(LS)=((b,c,d))
head(tail(LS))=(b,c,d)
tail(tail(LS))=()
head(head(tail(LS)))=b
tail(head(tail(LS)))=(c,d)
head(tail(head(tail(LS))))=c
tail(tail(head(tail(LS))))=(d)
head(tail(tail(head(tail(LS)))))=d
tail(tail(tail(head(tail(LS)))))=()
本文详细介绍了广义表的基本操作——head和tail,解释了它们的工作原理。通过实例解析如何从广义表LS=((a,b,c),(d,e,f))中提取元素e,强调了tail总是返回一个表,而head可以返回元素或子表。讨论了如何通过连续应用这两个操作来定位并提取广义表内的深层元素。
2222

被折叠的 条评论
为什么被折叠?



