Odd Even Linked List
   public ListNode oddEvenList(ListNode head) {
        if (head == null) return null;
        ListNode dummy1 = new ListNode(-1);
        ListNode dummy2 = new ListNode(-2);
        ListNode p = dummy1, q = dummy2, curr = head;
        int counter = 0;
        while (curr != null) {
            ListNode tmp = curr.next;
            if (counter % 2 == 0) {
                p.next = curr;
                p = p.next;
                p.next = null;
            } else {
                q.next = curr;
                q = q.next;
                q.next = null;
            }
            counter++;
            curr = tmp;
        }
        p.next = dummy2.next;
        return dummy1.next;
    }