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) {
if (head == null) {
return head;
}
int len = 0;
ListNode temp = head;
while (temp != null) {
len++;
temp = temp.next;
}
//奇数位置节点挂接处
ListNode headNode = new ListNode(-1);
//偶数位置节点挂接处
ListNode headNode2 = new ListNode(-2);
ListNode headTemp = headNode;
ListNode headTemp2 = headNode2;
ListNode curNode = head;
for (int i = 1; i <= len; i++) {
if (i % 2 != 0) {
headTemp.next = curNode;
headTemp = curNode;
} else {
headTemp2.next = curNode;
headTemp2 = curNode;
}
curNode = curNode.next;
}
//{1,4,6,3,7} 当链表为奇数个节点时 要切断最后的联系 否则3->7 1->6->7->4->3->7形成了环
headTemp2.next = null;
//合并奇数、偶数节点 挂接为一组节点
headTemp.next = headNode2.next;
return headNode.next;
}
}