Problem
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
Example
Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.
Solution
public class Solution {
/**
* @param head: a singly linked list
* @return: Modified linked list
*/
public ListNode oddEvenList(ListNode head) {
if (head != null) {
//odd and even as two pointers, head and evenHead as two heads
ListNode odd = head;
ListNode even = head.next;
ListNode evenHead = head.next;
while (even != null && even.next != null) {
odd.next = even.next;
even.next = even.next.next;
odd = odd.next;
even = even.next;
}
odd.next = evenHead;
}
return head;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。