力扣(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;
}