fixed splay-tree bug
This commit is contained in:
parent
4aef03795d
commit
ad76c9ea7b
|
@ -865,10 +865,13 @@ Top-down splay
|
||||||
;; condensing copy
|
;; condensing copy
|
||||||
(v:set-next! mem* NODE-SIZE)
|
(v:set-next! mem* NODE-SIZE)
|
||||||
(let loop ([n root])
|
(let loop ([n root])
|
||||||
(when n
|
(cond [n
|
||||||
(let ([n* (vnode! mem* (vnode-key mem n) (vnode-value mem n) #f #f)])
|
(let ([n* (vnode! mem* (vnode-key mem n) (vnode-value mem n) #f #f)])
|
||||||
(set-vnode-left! mem* n* (loop (vnode-left mem n)))
|
(set-vnode-left! mem* n* (loop (vnode-left mem n)))
|
||||||
(set-vnode-right! mem* n* (loop (vnode-right mem n))))))
|
(set-vnode-right! mem* n* (loop (vnode-right mem n)))
|
||||||
|
n*)]
|
||||||
|
[else #f]))
|
||||||
|
(set-compact-splay-tree-root! s NODE-SIZE)
|
||||||
(set-compact-splay-tree-mem! s mem*))))
|
(set-compact-splay-tree-mem! s mem*))))
|
||||||
|
|
||||||
;; ========
|
;; ========
|
||||||
|
|
|
@ -227,12 +227,12 @@
|
||||||
|
|
||||||
(provide performance)
|
(provide performance)
|
||||||
|
|
||||||
(define (deep-test [test 'splay])
|
(define (deep-test [test 'splay] [count 100])
|
||||||
(let ([mk (case test
|
(let ([mk (case test
|
||||||
((splay) mksplay)
|
((splay) mksplay)
|
||||||
((adj) mkadj)
|
((adj) mkadj)
|
||||||
((skip) mkskip))])
|
((skip) mkskip))])
|
||||||
(for ([seed (in-range 100)])
|
(for ([seed (in-range count)])
|
||||||
(random-seed seed)
|
(random-seed seed)
|
||||||
(printf "seed = ~s\n" seed)
|
(printf "seed = ~s\n" seed)
|
||||||
(p "test" dict-test mk #t))))
|
(p "test" dict-test mk #t))))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user