2024 Clojure 状况调查!分享你的想法。

欢迎!请查看关于页面获取更多关于如何使用本站的信息。

–1
Clojure
已关闭

在这个场景中,你得到一个单链表数据结构。它只包含对头节点的引用。列表中的每个节点只包含一个数值和一个指向列表中下一个节点的引用。最后一个节点的"next"引用包含空值。
针对以下问题
1. 查找具有给定数值的元素,
2. 列出列表与自身的笛卡尔积 - 也就是说,列出所有由列表元素创建的可能配对。这里的顺序很重要 - 配对(1,2)与配对(2,1)不同。

针对这些问题中的每一个
说明你将使用的算法。将其写成伪代码或实际代码,并解释所有步骤、条件、函数参数以及所有其他使用功能。

非常感谢!

备注:已关闭 完成

1 答案

+1

这看起来像是一项家庭作业

以下是每个问题的解决方案

  1. (first (filter #{42} my-list))
  2. (for [i my-list j my-list] [i j])

然后

定义一个"raw"类型:(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 实现算法所需的所有接口

by
感谢您的低调回答
我不知道如何在终端上使用 'Use extend-type' 这一部分
你能为我解释一下吗?

我非常感谢你!
...