了解方案中的队列

时间:2012-01-26 20:54:16

标签: data-structures lisp scheme queue

以下是删除队列中项目的一些代码。我不明白为什么最后一个字,队列在那里。我确信我错过了一些简单的事情 - 请有人澄清一下吗?

(define (delete-queue! queue)
  (cond ((empty-queue? queue)
         (error "DELETE! called with an empty queue" queue))
        (else
         (set-front-ptr! queue (cdr (front-ptr queue)))
         queue))) 

^这最后一行是我的问题所在;为什么排队?只要front-ptr被设置为front-ptr的cdr,并不是排除队列中第一个元素所需的全部内容吗?

以下是上面定义的一些函数的定义:

(define (front-ptr queue) (car queue))
(define (rear-ptr queue) (cdr queue))
(define (set-front-ptr! queue item) (set-car! queue item))
(define (set-rear-ptr! queue item) (set-cdr! queue item))

1 个答案:

答案 0 :(得分:3)

它使函数返回队列。它看起来不像需要删除第一个项目,没有。也许这对调用函数的代码很方便。