Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
15
Task/Queue-Definition/Scheme/queue-definition-1.ss
Normal file
15
Task/Queue-Definition/Scheme/queue-definition-1.ss
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
(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)))
|
||||
25
Task/Queue-Definition/Scheme/queue-definition-2.ss
Normal file
25
Task/Queue-Definition/Scheme/queue-definition-2.ss
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
(define (make-queue)
|
||||
(let ((q (cons '() '())))
|
||||
(lambda (cmd . arg)
|
||||
(case cmd
|
||||
((empty?) (null? (car q)))
|
||||
((put) (let ((a (cons (car arg) '())))
|
||||
(if (null? (car q))
|
||||
(begin (set-car! q a) (set-cdr! q a))
|
||||
(begin (set-cdr! (cdr q) a) (set-cdr! q a)))))
|
||||
((get) (if (null? (car q)) 'empty
|
||||
(let ((x (caar q)))
|
||||
(set-car! q (cdar q))
|
||||
(if (null? (car q)) (set-cdr! q '()))
|
||||
x)))
|
||||
))))
|
||||
|
||||
(define q (make-queue))
|
||||
(q 'put 1)
|
||||
(q 'put 6)
|
||||
(q 'get)
|
||||
; 1
|
||||
(q 'get)
|
||||
; 6
|
||||
(q 'get)
|
||||
; empty
|
||||
Loading…
Add table
Add a link
Reference in a new issue