import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode oddEvenList (ListNode head) {
// write code here
if (head == null || head.next == null) return head;
/*
odd 指向奇数节点的指针
oddHead 指向初始奇数节点的头指针
even 指向偶数节点的指针
evenHead 指向初始偶数节点的头指针
*/
ListNode odd = head, oddHead = head, even = head.next, evenHead = head.next;
while (even != null && even.next != null) {
// 奇数节点指向偶数节点的 next
odd.next = even.next;
// 奇数节点指针后移
odd = odd.next;
// 偶数节点指向奇数节点的 next
even.next = odd.next;
// 偶数节点指针后移
even = even.next;
}
// 将奇数节点的 next 指向 偶数节点的初始头指针
odd.next = evenHead;
// 返回奇数节点的初始头指针
return oddHead;
}
}