16 lines
391 B
Scheme
16 lines
391 B
Scheme
(define (make-queue)
|
|
(make-vector 1 '()))
|
|
|
|
(define (push a queue)
|
|
(vector-set! queue 0 (append (vector-ref queue 0) (list a))))
|
|
|
|
(define (empty? queue)
|
|
(null? (vector-ref queue 0)))
|
|
|
|
(define (pop queue)
|
|
(if (empty? queue)
|
|
(error "can not pop an empty queue")
|
|
(let ((ret (car (vector-ref queue 0))))
|
|
(vector-set! queue 0 (cdr (vector-ref queue 0)))
|
|
ret)))
|