xanadu - btree
This commit is contained in:
		
							parent
							
								
									c85b80f333
								
							
						
					
					
						commit
						e69708fefd
					
				| 
						 | 
				
			
			@ -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))
 | 
			
		||||
                         (string>? str (vector-ref tree (+ i 1))))
 | 
			
		||||
                   ((and (string<? str (((vector-ref tree i) 'get-data)))
 | 
			
		||||
                         (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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue