blob: 7cfedb88d7bdd4ce9f6b6baefe1dcacb61f2bd17 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#lang racket
(require "../../shared/sets.rkt")
;; just use id as key
(define (key x)
(if (number? x)
x
(error "Only supports numericals that we can compare with >, <, = -- KEY")))
(define (list-lookup given-key set-of-records)
(cond ((null? set-of-records) false)
((equal? given-key (key (car set-of-records)))
(car set-of-records))
(else (list-lookup given-key (cdr set-of-records)))))
(define (lookup given-key set-of-records)
(if (null? set-of-records)
false
(let ((v (key (car set-of-records))))
(cond ((= given-key v) v)
((< given-key v)
(lookup given-key (left-branch set-of-records)))
((> given-key v)
(lookup given-key (right-branch set-of-records)))))))
((lambda ()
(println "list -- LOOKUP")
(println (list-lookup 5 (list 1 2 3 4 5)))
(newline)
(println "tree -- UNION")
(define test216a (make-entry
7
'()
'()))
(define test216b (make-entry
4
(make-entry 1 '() '())
(make-entry
8
(make-entry 6 '() '())
(make-entry
10
'()
(make-entry
12
'()
'())))))
(println (lookup 10
(union-set
(list->tree (tree->list test216a))
(list->tree (tree->list test216b)))))
(newline)))
|