奇偶链表

题目 - Odd Even Linked List

LeetCode-328

难度:中等

分析

  1. 使用指针记录偶数链的头结点 evenHead
  2. 使用奇偶指针,进行循环遍历,依次将指针的next指向下一个节点
  3. 连接两个链表:将奇数链表的最后一个节点 next 指向 evenHead

image-20200804103008669

代码

func oddEvenList(_ head: ListNode?) -> ListNode? {
    var odd = head
    var even = head?.next
    let evenHead = even
    while even != nil && even?.next != nil {
        odd?.next = odd?.next?.next
        odd = odd?.next
        even?.next = odd?.next
        even = even?.next
    }
    odd?.next = evenHead
    return head
}