• 算法
    • 1.双指针
    • 2.先保存奇数头节点和偶数头节点(避免引用中的属性发生变化)
    • 3.一个引用指向奇数节点,一个引用指向偶数节点,开始往后处理结点指向
    • 4.结束的条件是,偶数节点不为null且偶数节点的next不为null
    • 5.最后将偶数头节点挂到奇数链表尾节点
public ListNode oddEvenList(ListNode head) {
    if (head == null || head.next == null) {
        return head;
    }

    ListNode oddHead = head;
    ListNode evenHead = head.next;
    ListNode oddCurr = oddHead;
    ListNode evenCurr = evenHead;
    while (evenCurr != null && evenCurr.next != null) {
        oddCurr.next = evenCurr.next;
        oddCurr = oddCurr.next;
        evenCurr.next = oddCurr.next;
        evenCurr = evenCurr.next;
    }
    oddCurr.next = evenHead;
    return head;
}
func oddEvenList(head *ListNode) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }

    oddHead, evenHead := head, head.Next
    oddCurr, evenCurr := oddHead, evenHead
    for evenCurr != nil && evenCurr.Next != nil {
        oddCurr.Next = evenCurr.Next
        oddCurr = oddCurr.Next
        evenCurr.Next = oddCurr.Next
        evenCurr = evenCurr.Next
    }
    oddCurr.Next = evenHead
    return oddHead
}