申明:本文只用做自己的学习记录
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4]
输出:[2,1,4,3]
示例 2:
输入:head = []
输出:[]
示例 3:
输入:head = [1]
输出:[1]
代码
type ListNode struct {
Val int
Next *ListNode
}
func swapPairs(head *ListNode) *ListNode {
dummy := &ListNode{0, head}
temp := dummy
if temp.Next != nil && temp.Next.Next != nil {
//取1-end链表
temp1 := temp.Next
//取2-end链表
temp2 := temp.Next.Next
//截断链表的第1个节点,接上第2个节点及其后面的链表
temp.Next = temp2
//将第1个节点保留,截断第2个节点,接上第3个节点及其后面的链表
temp1.Next = temp2.Next
//第2个节点在第一位,第1个节点在第二位,并接上后面的链表
temp2.Next = temp1
//更新temp值进行下一轮循环
temp = temp1
}
return dummy.Next
}