Do it in place with 3 pointers. Previous, current, and next. Move the pointer on current from next to previous, then advance all 3 pointers. When next is null, current becomes your new head node.
This avoids expensive memory allocations and minimizes writes to RAM.