List to be reversed (lst1) | Reversed list so far (lst2) | |
---|---|---|
(1 2 3 4 5) | () | |
(2 3 4 5) | (1) | |
(3 4 5) | (2 1) | |
(4 5) | (3 2 1) | |
(5) | (4 3 2 1) | |
() | (5 4 3 2 1) |
(define reverse (lambda (lst) (define reverse-onto (lambda (lst1 lst2) (if (null? lst1) lst2 (reverse-onto (cdr lst1) (cons (car lst1) lst2))))) (reverse-onto lst '())))Q: If the list to be reversed has n elements, how many conses are performed?
A: n (linear, or Θ(n))