17、Prolog编程中的列表、结构处理与排序算法

Prolog编程中的列表、结构处理与排序算法

1. 列表作为结构

在Prolog中,列表也是一种结构。具体来说,列表是一种仅在右侧分支的树结构。例如,列表 [a,b,c] 在函子 - 参数表示法中可写为 .(a,.(b,.(c,[]))) ,但通常我们使用方括号的形式。以下是一些等价表示:
- .(a,[]) 等价于 [a]
- .(a,.(b,.(c,[]))) 等价于 [a,b,c]
- .(a,b) 等价于 [a|b] (这是一个不恰当列表)
- .(a,.(b,.(c,d))) 等价于 [a,b,c|d] (另一个不恰当列表)

每个非空列表都以点( . )作为主函子,但空列表 [] 不是结构,也不包含点函子。列表的分支特点是每个点函子有两个参数,第一个参数是一个元素,第二个参数是另一个列表,即每个列表由一个元素加上另一个列表或 [] 组成。如果列表不以 [] 结尾,则称为不恰当列表。

列表相对于多参数结构的一大优势是,无需知道列表元素的数量就能对其进行处理。任何非空列表都能与 .(X,Y) (更常见的写法是 [X|Y] )进行合一,然后可以处理元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值