SICPを読む(104) 問題 3.21 - 3.22 - キュー(2)
もうちょい。
問題 3.21
Benのわがままを聞け。
(define print-queue car) (print-queue q) ; ()
な、消えてるだろ。データ構造がリストなんだからしょうがないじゃん。
問題 3.22
んじゃデータ構造変えてやればいいじゃないかと、次の問題へ。
(define (make-queue) (let* ((front-ptr '()) (rear-ptr '()) (empty-queue? (lambda () (null? front-ptr)))) (lambda (m) (case m ('empty-queue? (empty-queue?)) ('front-queue (if (empty-queue?) (error "empty.") (car front-ptr))) ('insert-queue! (lambda (v) (let ((new-pair (list v))) (if (empty-queue?) (set! front-ptr new-pair) (set-cdr! rear-ptr new-pair)) (set! rear-ptr new-pair) front-ptr))) ('delete-queue! (cond ((empty-queue?) (error "empty.")) (else (set! front-ptr (cdr front-ptr)) front-ptr))) (else (error "require method."))))))
案外修正点が多かった。