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