Simple Answer: Create a reference to the head, and traverse that. That way you never lose that reference to the head.
Example:
ListNode iter = head;
while(iter.next != null){
//DO Stuff
iter = iter.next;
}
Note now that the head variable is never changed. It is ready to be used as before.