package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
func oddEvenList( head *ListNode ) *ListNode {
if head == nil || head.Next == nil {
return head
}
oddPointer := head
evenPointer := head.Next
list1 := &ListNode{Val: 0}
list2 := &ListNode{Val: 0}
tmp1 := list1
tmp2 := list2
for oddPointer != nil && oddPointer.Next != nil && evenPointer != nil && evenPointer.Next != nil {
tmp1.Next = &ListNode{Val: oddPointer.Val}
tmp2.Next = &ListNode{Val: evenPointer.Val}
tmp1 = tmp1.Next
tmp2 = tmp2.Next
oddPointer = oddPointer.Next.Next
evenPointer = evenPointer.Next.Next
}
if oddPointer != nil {
tmp1.Next = oddPointer
tmp1 = tmp1.Next
}
if evenPointer != nil {
tmp2.Next = evenPointer
}
tmp1.Next = list2.Next
return list1.Next
}