1 ;; weiqun zhang's solution
13 (error "FRONT called with an empty queue")
16 (let ((new-pair (cons item '())))
18 (set! front-ptr new-pair)
19 (set! rear-ptr new-pair))
21 (set-cdr! rear-ptr new-pair)
22 (set! rear-ptr new-pair)))))
25 (error "DELETE! called with an empty queue"))
27 (set! front-ptr (cdr front-ptr)))))
29 (cond ((eq? m 'insert-queue!) ins-q!)
30 ((eq? m 'delete-queue!) (del-q!))
31 ((eq? m 'front-queue) (fro-q))
32 ((eq? m 'empty-queue?) (emp-q?))
33 ((eq? m 'print-queue) (prt-q))
34 (else (error "Undefined operation -- MAKE-QUEUE" m))))
36 (define (insert-queue! queue item)
37 ((queue 'insert-queue!) item)
39 (define (delete-queue! queue)
40 (queue 'delete-queue!)
42 (define (empty-queue? queue)
43 (queue 'empty-queue?))
44 (define (front-queue queue)
46 (define (print-queue queue)