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;
}