从Scheme中的列表中删除重复项

时间:2015-04-27 19:08:17

标签: scheme

我需要从Scheme中的列表中删除连续重复项:

(remove '(e f f g h h e e))

应该返回

(e f g h e)

这就是我所拥有的,但我一直收到错误:

(define (remove lst)
  (cond
    ((null? lst '())
    ((null? (cdr lst)) '())
    ((equal? (car lst)(car(cdr lst)))(remove(cdr lst)))
    (cons(car lst)(remove (cdr lst))))))

我以为我走在正确的轨道上,但我看不出我做错了什么。

1 个答案:

答案 0 :(得分:0)

第一种情况下括号不正确,在最后一种情况下,您忘记编写else。另外,第二种情况不正确;这就是我的意思:

(define (remove lst)
  (cond
    ((null? lst) '())
    ((null? (cdr lst)) lst)
    ((equal? (car lst) (car (cdr lst))) (remove (cdr lst)))
    (else (cons (car lst) (remove (cdr lst))))))