odd/even 두 개의 포인터를 두고 while 순회하면서 서로 next 포인터를 바꿔주면 된다.
짝수가 뒤로 붙기 때문에 while 조건은 (even != null && event.next != null)
이제 최종 홀수 노드의 next가 짝수의 시작이 되어야 하므로 연결해주면 된다.
class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode odd = head;
ListNode even = head.next;
ListNode evenHead = even;
while (even != null && even.next != null) {
odd.next = even.next;
odd = odd.next;
even.next = odd.next;
even = even.next;
}
odd.next = evenHead;
return head;
}
}