public void reorderList(ListNode head) {
            if (head == null) return;
            if (head.next == null) return;
            if (head.next.next == null) return;
            
            ListNode oneJump = head, 
                    twoJump = head.next;
            while (twoJump != null && twoJump.next != null) {
                oneJump = oneJump.next;
                twoJump = twoJump.next.next;
            }
            
            ListNode temp;
            
            ListNode current = oneJump.next,
                    next = current.next;
            oneJump.next = null;
            current.next = null;
            while (next != null) {
                temp = next.next;
                next.next = current;
                current = next;
                next = temp;
            }
            
            ListNode tail = current;
            while (tail != null) {
                temp = head.next;
                head.next = tail;
                tail = tail.next;
                head.next.next = temp;
                head = temp;
            }
        }