算法 链表的奇偶重排 求解代码 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; }