From e69708fefd53ae3de079dd8de09ceec4d419b08e Mon Sep 17 00:00:00 2001 From: erana Date: Sat, 21 Jan 2012 13:38:01 +0900 Subject: [PATCH] xanadu - btree --- scsh/xanadu/b-tree.scm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/scsh/xanadu/b-tree.scm b/scsh/xanadu/b-tree.scm index 78ecbb9..b1ff37d 100644 --- a/scsh/xanadu/b-tree.scm +++ b/scsh/xanadu/b-tree.scm @@ -30,9 +30,16 @@ (let ((numitems 0) (numnodes 0) (root 'foo) + (data #f) (left l) (right r)) + (define (get-data) + data) + + (define (set-data! value) + (set! data value)) + (define (get-left) left) @@ -58,6 +65,10 @@ get-numnodes) ((eq? msg 'get-left) get-left) + ((eq? msg 'get-data) + get-data) + ((eq? msg 'set-data!) + set-data!) ((eq? msg 'get-right) get-right) (else (display "b-tree-node : message not understood"))))) @@ -103,10 +114,11 @@ ((= j len) (display "node not added.") 0) (add-rec str (vector-ref j tree))) ))) - ((and (string? str (vector-ref tree (+ i 1)))) + ((and (string? str (((vector-ref tree (+ i 1)) 'get-data)))) (let ((lr (vector-median tree))) (let ((new-node (make-b-tree-node (car lr) (cadr lr)))) + ((new-node 'set-data!) str) (vector-set! tree i new-node) ))) ((string=? str (vector-ref tree i))