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) {
// write code here
if (head == null){
return null;
}
ListNode oddNodeTail = head;
ListNode evenNodeHead = head.next;
ListNode currentNode = head;
boolean isOdd = true;
while (currentNode.next != null){
ListNode preservedNextNode = currentNode.next;
ListNode tempNode = this.getNextNextNode(currentNode);
currentNode.next = tempNode;
if (isOdd){
oddNodeTail = tempNode != null ? tempNode : currentNode;
isOdd = false;
}else{
isOdd = true;
}
currentNode = preservedNextNode;
}
oddNodeTail.next = evenNodeHead;
return head;
}
public ListNode getNextNextNode (ListNode node){
if (node == null){
return null;
}
if (node.next == null){
return null;
}
return node.next.next;
}
}