函数如何接收列表的两个参数,制作指向第二个列表的最后一个指针的第一个列表。该函数返回一个列表,它是指向第一个列表的指针。 以下是我写的代码:
(defun my-new-nconc (x y)
(if (null x)
y
(setf (cdddr x) y)))
答案 0 :(得分:1)
您可以使用RPLACD
将X
中最后一次收益的cdr设置为Y
。
(defun my-new-nconc (x y)
(if x
(progn (rplacd (last x) y)
x)
y))
(defparameter *foo* (list 1 2 3))
(defparameter *bar* (list 4 5 6))
(my-new-nconc *foo* *bar*)
*foo*
;=> (1 2 3 4 5 6)
答案 1 :(得分:0)
所以你想要的基本上是连接两个列表:
(defun concatenate-lists (x y)
"this function check that x and y are lists and concatenates them"
(when (and (listp x) (listp y))
(concatenate 'list x y)))
例如:
(concatenate-lists '(1 2 3) '(4 5 6))
如果其中一个不是列表,则结果将为 NIL