Blame


1 665c255d 2023-08-04 jrmu ;; weiqun zhang's solution
2 665c255d 2023-08-04 jrmu
3 665c255d 2023-08-04 jrmu (define (make-queue)
4 665c255d 2023-08-04 jrmu (let ((front-ptr '())
5 665c255d 2023-08-04 jrmu (rear-ptr '()))
6 665c255d 2023-08-04 jrmu (define (prt-q)
7 665c255d 2023-08-04 jrmu (newline)
8 665c255d 2023-08-04 jrmu (display front-ptr))
9 665c255d 2023-08-04 jrmu (define (emp-q?)
10 665c255d 2023-08-04 jrmu (null? front-ptr))
11 665c255d 2023-08-04 jrmu (define (fro-q)
12 665c255d 2023-08-04 jrmu (if (emp-q?)
13 665c255d 2023-08-04 jrmu (error "FRONT called with an empty queue")
14 665c255d 2023-08-04 jrmu (car front-ptr)))
15 665c255d 2023-08-04 jrmu (define (ins-q! item)
16 665c255d 2023-08-04 jrmu (let ((new-pair (cons item '())))
17 665c255d 2023-08-04 jrmu (cond ((emp-q?)
18 665c255d 2023-08-04 jrmu (set! front-ptr new-pair)
19 665c255d 2023-08-04 jrmu (set! rear-ptr new-pair))
20 665c255d 2023-08-04 jrmu (else
21 665c255d 2023-08-04 jrmu (set-cdr! rear-ptr new-pair)
22 665c255d 2023-08-04 jrmu (set! rear-ptr new-pair)))))
23 665c255d 2023-08-04 jrmu (define (del-q!)
24 665c255d 2023-08-04 jrmu (cond ((emp-q?)
25 665c255d 2023-08-04 jrmu (error "DELETE! called with an empty queue"))
26 665c255d 2023-08-04 jrmu (else
27 665c255d 2023-08-04 jrmu (set! front-ptr (cdr front-ptr)))))
28 665c255d 2023-08-04 jrmu (define (dispach m)
29 665c255d 2023-08-04 jrmu (cond ((eq? m 'insert-queue!) ins-q!)
30 665c255d 2023-08-04 jrmu ((eq? m 'delete-queue!) (del-q!))
31 665c255d 2023-08-04 jrmu ((eq? m 'front-queue) (fro-q))
32 665c255d 2023-08-04 jrmu ((eq? m 'empty-queue?) (emp-q?))
33 665c255d 2023-08-04 jrmu ((eq? m 'print-queue) (prt-q))
34 665c255d 2023-08-04 jrmu (else (error "Undefined operation -- MAKE-QUEUE" m))))
35 665c255d 2023-08-04 jrmu dispatch))
36 665c255d 2023-08-04 jrmu (define (insert-queue! queue item)
37 665c255d 2023-08-04 jrmu ((queue 'insert-queue!) item)
38 665c255d 2023-08-04 jrmu queue)
39 665c255d 2023-08-04 jrmu (define (delete-queue! queue)
40 665c255d 2023-08-04 jrmu (queue 'delete-queue!)
41 665c255d 2023-08-04 jrmu queue)
42 665c255d 2023-08-04 jrmu (define (empty-queue? queue)
43 665c255d 2023-08-04 jrmu (queue 'empty-queue?))
44 665c255d 2023-08-04 jrmu (define (front-queue queue)
45 665c255d 2023-08-04 jrmu (queue 'front-queue))
46 665c255d 2023-08-04 jrmu (define (print-queue queue)
47 665c255d 2023-08-04 jrmu (queue 'print-queue))