1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public ListNode oddEvenList (ListNode head) {
// 空链表 或 单节点链表,直接返回原链表
if(head == null || head.next == null){
return head;
}
// 初始化奇数链表的头节点和游标
ListNode oddHead = head;
ListNode oddCur = oddHead;
// 初始化偶数链表的头节点和游标
ListNode evenHead = head.next;
ListNode evenCur = evenHead;
while(evenCur != null && evenCur.next != null){
oddCur.next = oddCur.next.next; // 奇数节点跳过偶数位,指向下一个奇数位
evenCur.next = evenCur.next.next; // 偶数节点跳过奇数位,指向下一个偶数位
oddCur = oddCur.next; // 奇数游标后移
evenCur = evenCur.next; // 偶数游标后移
}
// 拼接奇数链表和偶数链表
oddCur.next = evenHead;
// 返回重排后的链表头节点
return oddHead;
}
|