A Nonrecursive List Moving Algorithm
An efficient, nonrecursive algorithm is given
for moving any LISP-type list.  In particular, 
the algorithm requires no storage other than the new
nodes into which the list is to be moved, and no 
additional bits per node for marking; the algorithm
runs in time proportional to the number of nodes 
in the list.  The original list structure is destroyed as it is moved.
CACM May, 1973
Reingold, E. M.
