给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路:使用递归解决,没进入一层递归向前移动两个元素,将相邻的两个元素交换。
func swapPairs(head *ListNode) *ListNode {
if head == nil {
return nil
}
if head.Next == nil {
return head
}
curr := swapPairs(head.Next.Next)
if curr == nil {
tmpPoint := head
head = head.Next
tmpPoint.Next = nil
head.Next = tmpPoint
return head
}else{
head.Next.Next = curr
tmpPoint := head.Next
head.Next = head.Next.Next
tmpPoint.Next = head
return tmpPoint
}
}