解题思路
交换链表中相邻节点的值,我们先从中间入手,有前 pre 有后 next,将当前节点设为 temp,那将 temp 和 temp.next 进行交换,即为将 pre 指向 temp.next,再将 temp.next.next 指向 next,再将 temp.next 指向 temp,即完成交换。如下图所示。
然后我们再将前面没有 pre 的部分处理好,如下图所示。
代码
class Solution {
func swapPairs(_ head: ListNode?) -> ListNode? {
var temp = head
var h: ListNode? = head
var pre: ListNode? = nil
while temp != nil && temp?.next != nil {
let tempN = temp?.next?.next
if pre != nil {
pre?.next = temp?.next
temp?.next?.next = temp
pre = temp
temp?.next = tempN
temp = tempN
} else {
h = temp?.next
pre = temp
h?.next = temp
temp?.next = tempN
temp = tempN
}
}
return h
}
}