我正在阅读Jorge Gajon's ,其中包括在Lisp中完成的一棵树的描述。作者给出了这个基本例子:

然后给出一个Lisp列表表示:
(1 (2 6 7 8) 3 (4 (9 12)) (5 10 11))职位意味着层级:1是列表中的第一位,也就是说,是在最上面,2是在下一层,但它是其级别的顶端,等等。但他随后给出了以下警告:
请注意,如果您需要在生产程序中表示树,您不应该像这里描述的那样使用列表,除非您有充分的理由。这只是一个理解反单元格如何工作的练习。
好的,如何在“生产”代码中表示树状数据结构?顺便说一句,我也希望看到一个无圈有向图的例子,也就是一些树式的,它也具有“多父”功能。例如,在上面的图表中,8是2的子类,但也是3的。
(1 (2 6 7 8) (3 8) (4 (9 12)) (5 10 11))但似乎我创造了一个8的“影子”双胞胎,但并没有真正说明8,也就是3的孩子,也是同样的8,还有2作为父母。如果我想让3人当12岁的父母,这个问题会变得更糟。
(1 (2 6 7 8) (3 8 12) (4 (9 12)) (5 10 11))可以说,12处于较低层次的事实在洗牌中消失了。
是否有良好和适当的待遇(书籍等)Lisp/Scheme/Clojure世界中的数据结构?我只找到了这种一次性的东西。
发布于 2014-05-18 17:34:53
“production”代码将使用CLOS ( Common对象系统)定义一个NODE类,并在图/树上进行操作。
发布于 2014-05-19 01:23:49
假设您已经安装了quicklisp,并且您应该安装,那么请考虑一下由:(ql:system-a残杀“http://cliki.net/site/search?query=graph”)枚举的libaries,并尝试cliki http://cliki.net/site/search?query=graph。
https://stackoverflow.com/questions/23724226
复制相似问题