【问题标题】:Understanding queues in scheme了解方案中的队列
【发布时间】:2012-01-26 20:54:16
【问题描述】:

这里是一些关于删除队列中的项目的代码。我不明白为什么最后一个词,队列在那里。我确定我错过了一些简单的东西 - 有人可以澄清一下吗?

(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))

【问题讨论】:

  • 只是用来指定返回值;排队

标签: data-structures lisp scheme queue


【解决方案1】:

它使函数返回队列。删除第一项似乎不需要它,不。也许它对调用函数的代码很方便。

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 2013-12-02
    • 2021-10-16
    • 2018-12-20
    • 2021-08-21
    • 2012-06-15
    • 2012-09-18
    • 2011-12-18
    相关资源
    最近更新 更多