Обръщане на списък на Lisp. Reverse!


Функция за деструктивно обръщане на списък.
От (1 2 3 4 5) => (5 4 3 2 1).

(define (reverse1 l)
  (if (null? l) '()
     (append (reverse1 (cdr l)) (list (car l)))
))
(define (reverse! l)
   (let ((l1 (reverse1 l)))
     (begin
     (set-cdr! l (cdr l1))
     (set-car! l (car l1))
     )
))
(define l (list 1 2 3))
(reverse! l)
l
  1. Няма коментари.
(will not be published)