链接:https://leetcode-cn.com/problems/odd-even-linked-list/
思路
穿针引线的赶脚
1.定义odd指针从head开始,用于穿奇数位节点
2.定义even指针从head.next开始,用于穿偶数为节点
3.在此注意一点,先穿奇,后穿偶,但是穿完之后,偶数位链表要在奇数位链表之后,所以事先存好偶数位链表的开始节点
4.开穿,直到even到达末尾(偶数肯定先到最后嘛)
5.然后把偶连在奇后头
6.返回head即可,head始终还是奇的开始
class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null || head.next == null)
return head;
//1.
ListNode odd = head;
//2.
ListNode even = head.next;
//3.
ListNode evenStart = head.next;
//4.
while (even != null && even.next != null) {
odd.next = odd.next.next;
even.next = even.next.next;
odd = odd.next;
even = even.next;
}
//5.
odd.next = evenStart;
//6.
return head;
}
}