Skip to content

2.62

; Give a Θ(n) implementation of union-set for sets represented as ordered lists.

(define (union-set set1 set2)
    (cond ((null? set1) set2)
          ((null? set2) set1)
          (else
            (let ((x1 (car set1))
                  (x2 (car set2)))
                (cond ((= x1 x2)
                       (cons x1 (union-set (cdr set1) (cdr set2))))
                      ((> x1 x2)
                       (cons x2 (union-set set1 (cdr set2))))
                      (else
                        (cons x1 (union-set (cdr set1) set2))))))))

; Testing
(union-set (list 1 3 4 6) (list 2 5 6 7)) ;(1 2 3 4 5 6 7)