【发布时间】:2021-05-24 03:24:48
【问题描述】:
要在方案中的位置 0 处插入项目,我可以执行以下操作:
(define 1-to-3 (cons 1 (cons 2 (cons 3 nil))))
(cons 100 1-to-3)
; (100 1 2 3)
是否有一种内置方法可以在列表末尾插入元素(即,将其附加到列表中)?
【问题讨论】:
-
只是一个评论:如果您需要定期添加到数据结构的末尾,列表将无法很好地为您服务。
-
@tf3 在这种情况下,更好的 lisp-data-structure 是什么?或者你的意思是使用像单链表这样的东西(如果是这样,那在 Lisp 中如何工作?)
-
lisp 列表真的不是单链表吗,这就是为什么我们要遍历列表的整个长度才能到达末尾?您需要一个队列数据结构,它只是一个列表,但其中还有一对包含对该列表的第一个和最后一个元素的引用。因此,您可以在恒定时间内到达列表的末尾,并改变最后一对的 cdr 以指向新的对。 (你不会在第 2 章中改变任何东西,第 3 章介绍了突变)