题目:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
解法:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func swapPairs(head *ListNode) *ListNode {
dummy := &ListNode{Next: head}
pre, cur := dummy, dummy.Next
for cur != nil {
next := cur.Next
if next == nil {
break
}
cur.Next = next.Next
next.Next = cur
pre.Next = next
pre = cur
cur = cur.Next
}
return dummy.Next
}