Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Queue-Definition/Common-Lisp/queue-definition.lisp
Normal file
26
Task/Queue-Definition/Common-Lisp/queue-definition.lisp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
(defstruct (queue (:constructor %make-queue))
|
||||
(items '() :type list)
|
||||
(tail '() :type list))
|
||||
|
||||
(defun make-queue ()
|
||||
"Returns an empty queue."
|
||||
(%make-queue))
|
||||
|
||||
(defun queue-empty-p (queue)
|
||||
"Returns true if the queue is empty."
|
||||
(endp (queue-items queue)))
|
||||
|
||||
(defun enqueue (item queue)
|
||||
"Enqueue item in queue. Returns the queue."
|
||||
(prog1 queue
|
||||
(if (queue-empty-p queue)
|
||||
(setf (queue-items queue) (list item)
|
||||
(queue-tail queue) (queue-items queue))
|
||||
(setf (cdr (queue-tail queue)) (list item)
|
||||
(queue-tail queue) (cdr (queue-tail queue))))))
|
||||
|
||||
(defun dequeue (queue)
|
||||
"Dequeues an item from queue. Signals an error if queue is empty."
|
||||
(if (queue-empty-p queue)
|
||||
(error "Cannot dequeue from empty queue.")
|
||||
(pop (queue-items queue))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue