2015-03-18 4 views
1

У меня есть список со мной, например: (B D F)Вставка в произвольной позиции в списке на схеме

Я хочу, чтобы вставить элемент в произвольной позиции в списке. Например, если элемент A, я хочу вставить его перед B, и если элемент C, я хочу вставить его после B, но до D.

Есть ли способ вставить элементы в произвольное положение в список в Схеме?

ответ

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^