sccat 发表于 2005-2-3 13:21:00

[求助]Lisp怎样实现类似链表和二叉树这样的数据结构

<FONT face=宋体 size=2>Lisp怎样实现类似链表和二叉树这样的数据结构<BR><BR>请高手多多指教。</FONT>

sccat 发表于 2005-2-5 17:00:00

有没有人精通普通的Lisp(不是autocad下的Lisp)


或者推荐一些书和网站。

sccat 发表于 2005-2-6 13:43:00

我想知道能不能在


表 '(a b c e) 中 插入一个 d 变成 '(a        b c d e)


求一种在表的某个位置插入元素的通用做法

ZZXXQQ 发表于 2005-2-6 16:17:00

下面的函数仅对数字和字串有效(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
)

sccat 发表于 2005-2-6 21:45:00

LST ATM I J TMP TML A


分别是什么含义啊?

ZZXXQQ 发表于 2005-2-16 01:37:00

好象少了一个“/”号!“/”号后面的是内部变量名。


(DEFUN LSTINSERT ( / LST ATM I J TMP TML A)<BR>        (SETQ L (LENGTH LST) I 0 J -1 TMP LST TML (LIST))<BR>        (WHILE (&lt; I L)<BR>       (SETQ A (CAR TMP) TMP (CDR TMP) I (1+ I))<BR>       (IF (&lt; ATM A) (SETQ J I I L) (SETQ TML (CONS A TML)))<BR>        )<BR>        (IF (&gt; J 0)<BR>       (SETQ TMP (APPEND (REVERSE TML) (LIST ATM) TMP))<BR>       (SETQ TML (CONS ATM TML) TMP (REVERSE TML))<BR>        )<BR>        TMP<BR>)

无痕 发表于 2005-2-16 04:25:00

;;测试: (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]
查看完整版本: [求助]Lisp怎样实现类似链表和二叉树这样的数据结构