力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

单指针即可

 public ListNode oddEvenList (ListNode head) {
 
        // write code here  双队列也能做,但是耗空间
 
        //使用双指针 偶数与奇数位置各有一个指针
 
        if(head==null){
 
            return null;
 
        }
 
  
 
        ListNode odd = head; //奇数位置指针
 
        ListNode even = head.next; //偶数位置指针
 
  
 
        ListNode evenHead = even; //偶数结果集
 
  
 
        while(even!=null&&even.next!=null){
 
            odd.next = odd.next.next; //指向下一个奇数位置
 
            even.next = even.next.next;////指向下一个偶数位置
 
            odd = odd.next; //指向奇数位置
 
            even = even.next; //指向偶数位置
 
        }
 
  
 
        //经过上面循环体后,产生了两段链表,连接即可
 
        odd.next = evenHead;
 
        return head;
 
  
  
  
  
 
    }