欢迎!请查看关于页面获取更多关于如何使用本站的信息。
在这个场景中,你得到一个单链表数据结构。它只包含对头节点的引用。列表中的每个节点只包含一个数值和一个指向列表中下一个节点的引用。最后一个节点的"next"引用包含空值。针对以下问题1. 查找具有给定数值的元素,2. 列出列表与自身的笛卡尔积 - 也就是说,列出所有由列表元素创建的可能配对。这里的顺序很重要 - 配对(1,2)与配对(2,1)不同。
针对这些问题中的每一个说明你将使用的算法。将其写成伪代码或实际代码,并解释所有步骤、条件、函数参数以及所有其他使用功能。
非常感谢!
这看起来像是一项家庭作业
以下是每个问题的解决方案
(first (filter #{42} my-list))
(for [i my-list j my-list] [i j])
然后
定义一个"raw"类型:(deftype MyNode [value next-node])构建您的列表: (def my-list (->MyNode 42 (->MyNode 55 nil)))
(deftype MyNode [value next-node])
(def my-list (->MyNode 42 (->MyNode 55 nil)))
尝试执行 1: (first (filter #{42} my-list))。会出现错误,因为您的类型未实现 ISeq使用 extend-type 将您的自定义类型 MyNode 扩展到 ISeq 协议并重复这些步骤,直到 MyNode 实现算法所需的所有接口
1
extend-type
MyNode
ISeq