链表: 链表的奇偶重排

58 阅读1分钟

image.png

方法:双指针

  1. 声明两个指针,奇数节点和偶数节点
  2. 遍历指向最新的下个节点
function oddEvenList( head ) {
    if(!head || !head.next) return head;
    
    let odd = head; // 奇数
    let even = head.next; // 偶数
    let evenhead = even;
    while(even && even.next) {
        odd.next = odd.next.next // 下个节点指向下下个
        even.next = even.next.next; // 下个节点指向下下个
        odd = odd.next; // 走到下个新节点
        even = even.next; // 走到下个新节点
    }
     odd.next = evenhead; // 多余的给接上
     return head;
}