申明:本文只用做自己学习记录
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
代码
func swapPairs(head *ListNode) *ListNode {
//边界条件
if head == nil || head.Next == nil {
return head
}
dummy := &ListNode{0, head}
temp := dummy
for temp.Next != nil && temp.Next.Next != nil {
//截取第一个链表
content1 := temp.Next
//截取第二个链表
content2 := temp.Next.Next
//将第二个节点接在第一位
temp.Next = content2
//更新content1后面的节点
content1.Next = content2.Next
//将更新后的content1接在temp的第二个位置
temp.Next.Next = content1
//更新temp
temp = temp.Next.Next
}
return dummy.Next
}