如何用LISP语言实现Stack

时间:2013-05-12 00:33:18

标签: stack lisp implementation

我还在学习Lisp语言,我需要了解如何使用Lisp实现堆栈(需要push-pop-peek函数。)。另外,我在寻找帮助时找到了这段代码。但我不确定它是否正常工作。

(defstruct stack
  elements)

(defun stack-push (element stack)
  (push element (stack-elements stack)))

(defun stack-pop (stack)(deftype Stack [elements])

(defun stack-empty (stack)
  (endp (stack-elements stack)))

(defun stack-top (stack)
  (first (stack-elements stack)))

(defun stack-peek (stack)
  (stack-top stack))

1 个答案:

答案 0 :(得分:2)

Lisp列表实际上是功能堆栈。

(cons a l)将a推送到堆栈l。

(car l)返回第一个元素(窥视)。

(cdr l)返回除第一个元素(pop)之外的所有元素。