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