以下是删除队列中项目的一些代码。我不明白为什么最后一个字,队列在那里。我确信我错过了一些简单的事情 - 请有人澄清一下吗?
(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))
答案 0 :(得分:3)
它使函数返回队列。它看起来不像需要删除第一个项目,没有。也许这对调用函数的代码很方便。