[求助]Lisp怎样实现类似链表和二叉树这样的数据结构
<FONT face=宋体 size=2>Lisp怎样实现类似链表和二叉树这样的数据结构<BR><BR>请高手多多指教。</FONT> 有没有人精通普通的Lisp(不是autocad下的Lisp)或者推荐一些书和网站。 我想知道能不能在
表 '(a b c e) 中 插入一个 d 变成 '(a b c d e)
求一种在表的某个位置插入元素的通用做法 下面的函数仅对数字和字串有效(DEFUN LSTINSERT (LST ATM I J TMP TML A)
(SETQ L (LENGTH LST) I 0 J -1 TMP LST TML (LIST))
(WHILE (< I L)
(SETQ A (CAR TMP) TMP (CDR TMP) I (1+ I))
(IF (< ATM A) (SETQ J I I L) (SETQ TML (CONS A TML)))
)
(IF (> J 0)
(SETQ TMP (APPEND (REVERSE TML) (LIST ATM) TMP))
(SETQ TML (CONS ATM TML) TMP (REVERSE TML))
)
TMP
) LST ATM I J TMP TML A
分别是什么含义啊? 好象少了一个“/”号!“/”号后面的是内部变量名。
(DEFUN LSTINSERT ( / LST ATM I J TMP TML A)<BR> (SETQ L (LENGTH LST) I 0 J -1 TMP LST TML (LIST))<BR> (WHILE (< I L)<BR> (SETQ A (CAR TMP) TMP (CDR TMP) I (1+ I))<BR> (IF (< ATM A) (SETQ J I I L) (SETQ TML (CONS A TML)))<BR> )<BR> (IF (> J 0)<BR> (SETQ TMP (APPEND (REVERSE TML) (LIST ATM) TMP))<BR> (SETQ TML (CONS ATM TML) TMP (REVERSE TML))<BR> )<BR> TMP<BR>) ;;测试: (tt 'd 3 '(a b c e)) ->(A B C D E)(defun tt (a i lst / n)
(setq n -1)
(apply 'append (mapcar '(lambda(x)(if (= i (setq n (1+ n))) (list a x)(list x)) ) lst))
)
页:
[1]