| 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))