7 (define (set-front-ptr! queue item)
9 (define (set-rear-ptr! queue item)
11 (define (empty-queue? queue)
13 (define (front-queue queue)
14 (if (empty-queue? queue)
15 (error "FRONT called with an empty queue" queue)
17 (define (insert-queue! queue item)
18 (let ((new-pair (cons item '())))
19 (cond ((empty-queue? queue)
20 (set-front-ptr! queue new-pair)
21 (set-rear-ptr! queue new-pair)
24 (set-cdr! rear-ptr new-pair)
25 (set-rear-ptr! queue new-pair)
27 (define (delete-queue! queue)
28 (cond ((empty-queue? queue)
29 (error "DELETE! called with an empty queue" queue))
31 (set-front-ptr! queue (cdr front-ptr))
35 ((eq? m 'insert-queue!)
37 (insert-queue! queue item)))
38 ((eq? m 'delete-queue!)
40 (delete-queue! queue)))
41 ((eq? m 'empty-queue?)
43 (empty-queue? queue)))
46 (front-queue queue)))))
49 (define (empty-queue? queue)
50 ((queue 'empty-queue?) queue))
52 (define (front-queue queue)
53 ((queue 'front-queue) queue))
55 (define (insert-queue! queue item)
56 ((queue 'insert-queue!) queue item))
58 (define (delete-queue! queue)
59 ((queue 'delete-queue!) queue))