在广义表(Generalized List)中,head
和 tail
函数是两个基本操作,用于操作和提取广义表的不同部分。这两个函数的概念来源于列表处理语言(如LISP)中的基本操作,主要作用如下:
1. head 函数
- 定义:
head
函数用于提取广义表的第一个元素。这个元素可以是一个原子,也可以是一个子表。 - 操作对象:广义表。
- 结果:返回广义表的第一个元素。
示例
假设广义表为: L = (a, (b, c), d)
head(L)
的结果是: a
(即广义表的第一个元素)
如果广义表是: L = ((a, b), c, d)
head(L)
的结果是: (a, b)
(即第一个元素本身是一个子表,head
返回整个子表)
2. tail 函数
- 定义:
tail
函数用于提取广义表中去掉第一个元素后的剩余部分。 - 操作对象:广义表。
- 结果:返回一个广义表,包含去掉第一个元素后的其余部分。
示例
假设广义表为: L = (a, (b, c), d)
tail(L)
的结果是: ((b, c), d)
(即去掉第一个元素 a 后的剩余部分,仍然是一个广义表)
如果广义表是: L = ((a, b), c, d)
tail(L)
的结果是: (c, d)
(即去掉第一个子表 (a, b) 后的其余部分)
总结对比
函数 | 作用 | 结果 | 示例结果 |
---|---|---|---|
head | 提取第一个元素 | 可以是原子或子表 | a 或 (a, b) |
tail | 去掉第一个元素后的部分 | 剩余的广义表 | ((b, c), d) 或 (c, d) |
广义表分解规则
广义表 L 一般可以表达为:L = (head(L), tail(L))
这表明广义表由其第一个元素(head
)和剩余部分(tail
)组成。
举例
对于广义表: L = (a, (b, c), d, e)
分解操作:
head(L)
= atail(L)
= ((b, c), d, e)
如果对 tail(L)
再次应用 head
和 tail
:
head(tail(L))
= (b, c)tail(tail(L))
= (d, e)
评论留言
欢迎您,!您可以在这里畅言您的的观点与见解!
0 条评论