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 に答える