Copy LinkedList with Arbitrary Pointer