Solution to Odd Even Linked List Problem. Watch this video for more detailed explanation.

class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head == null)
            return head;
        
        ListNode oddStart = head;
        ListNode evenStart = head.next;

        ListNode evenCur = evenStart;
        ListNode oddCur = oddStart;
        while(oddCur != null && oddCur.next != null && evenCur != null && evenCur.next != null) {
            // This approach also works
            // oddCur.next  = oddCur.next.next;
            // evenCur.next = evenCur.next.next;
            // oddCur = oddCur.next;
            // evenCur = evenCur.next;
            
            oddCur.next = evenCur.next;
            oddCur = oddCur.next;
            evenCur.next = oddCur.next;
            evenCur = evenCur.next;
        }
        
        oddCur.next = evenStart;
        
        return head;
    }
}