1

我有一个清单,例如:(B D F)

我想在列表中的任意位置插入一个元素。例如,如果元素是 A,我想在 B 之前插入它,如果元素 C,我想在 B 之后但 D 之前插入它。

有没有办法在 Scheme 的列表中的任意位置插入元素?

4

1 回答 1

2

为此很容易实现一个功能:

(define (insert-at new k lst)
  (cond ((null? lst)
         (list new))
        ((zero? k)
         (cons new lst))
        (else
         (cons (car lst)
               (insert-at new (sub1 k) (cdr lst))))))

例如:

(insert-at 'B 1 '(A))
=> '(A B)

(insert-at 'A 0 '(B D F))
=> '(A B D F)

(insert-at 'C 2 '(A B D F))
=> '(A B C D F)
于 2015-03-18T15:01:37.413 回答