import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode oddEvenList (ListNode head) {
        // 奇数位
        ListNode oddDummy = new ListNode(-1);
        ListNode oddCur = oddDummy;

        // 偶数位
        ListNode evenDummy = new ListNode(-1);
        ListNode evenCur = evenDummy;


        int i = 1;
        while (head != null) {
		  
            // 奇数位
            if (i % 2 == 1) {
                oddCur.next = head;
                oddCur = head;
            } else {
                evenCur.next = head;
                evenCur = head;
            }

            head = head.next;
            i++;
        }
	   	//	当节点个数是奇数的时候,偶数节点的尾结点还指向原始链表的最后一位,把他指向null。防止循环节点
	    //	这里用i%2 ==0 是因为在上边循环里i++,后变成了偶数。
        if (i % 2 == 0) {
            evenCur.next = null;
        }

        oddCur.next = evenDummy.next;
        return oddDummy.next;
    }
}