Loading...

链表的奇偶重排

在这里插入图片描述

求解代码

 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;
}
最后更新于 2026-04-05 17:35:33
Code Road Record