X-Git-Url: https://git.distorted.org.uk/~mdw/lisp/blobdiff_plain/dd33a77309be7d492ef49bfdacbc131abe1ddced..813da880d2d77f04ea623f426d543d298528f967:/queue.lisp diff --git a/queue.lisp b/queue.lisp index 49c69c5..44ec534 100644 --- a/queue.lisp +++ b/queue.lisp @@ -22,10 +22,10 @@ ;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. (defpackage #:queue - (:use #:common-lisp) - (:export #:make-queue #:queue-emptyp #:enqueue #:pushqueue #:dequeue)) + (:use #:common-lisp)) (in-package #:queue) +(export 'make-queue) (defun make-queue () "Make a new queue object." ;; A queue is just a cons cell. The cdr is the head of the list of items @@ -35,16 +35,19 @@ (let ((q (cons nil nil))) (setf (car q) q))) +(export 'queue-emptyp) (defun queue-emptyp (q) "Answer whether the queue Q is empty." (null (cdr q))) +(export 'enqueue) (defun enqueue (x q) "Enqueue the object X into the queue Q." (let ((c (cons x nil))) (setf (cdr (car q)) c (car q) c))) +(export 'pushqueue) (defun pushqueue (x q) "Push the object X onto the front of the queue Q." (let* ((first (cdr q)) @@ -52,6 +55,7 @@ (setf (cdr q) new) (unless first (setf (car q) new)))) +(export 'dequeue) (defun dequeue (q) "Remove and return the object at the head of the queue Q." (if (queue-emptyp q)