乐正

Actions speak louder than words.

Sicp-ex2-61

问题

请给出采用排序表示时adjoin-set的实现。通过类似element-of-set?的方式说明,可以 如何利用排序的优势得到一个过程,请平均所需的步数是采用未排序表示时的一半。

解答

练习2.61 (ex2-61.scm) download
1
2
3
4
5
6
(define (adjoin x set)
  (cond ((null? set)
         (cons x set))
        ((= x (car set)) set)
        ((< x (car set)) (cons x set))
        (else (cons (car set) (adjoin x (cdr set))))))

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(adjoin 3 '())
;Value 13: (3)

(define s '(1 3 8))
;Value: s

(adjoin 5 s)
;Value 14: (1 3 5 8)

(adjoin 10 s)
;Value 15: (1 3 8 10)

(adjoin 3 s)
;Value 16: (1 3 8)

draft

« sicp-ex2-60 sicp-ex2-62 »

Comments