Решено, спасибо.Я фактически добавил head.next в последний узел моего head.child, поэтому при следующем запуске lastNode был возвращен другой указатель.
В следующем коде закомментированный код дал другой результат, почему?
Я ожидал того же поведения.
Node p = lastNode(head.child); //Define a extra pointer
p.next = head.next;
if(head.next!=null) head.next.prev = p;
//lastNode(head.child).next = head.next; // Not Working
//head.next.prev = lastNode(head.child);