题目描述
代码
- 奇偶交替进行,一次遍历
- 注意边界情况,当节点数为偶数个时,倒数第二节点.next会指向倒数第一节点,由于后面直接cur1.next = evenhead,所以不影响。
class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null) return null;
ListNode oddHead = head, envenHead = head.next;
ListNode cur1= oddHead, cur2 = envenHead;
// 奇偶交替进行
while (cur1.next != null && cur2.next != null) {//注意不能写成 cur1 != null && cur2 != null
//odd node
cur1.next = cur2.next;
cur1 = cur1.next;
//even node
cur2.next = cur1.next;
cur2 = cur2.next;
}
cur1.next = envenHead;
return oddHead;
}
}