力扣链接:
https://leetcode-cn.com/probl...
- 新建一个虚构节点,指向head
- 本题没什么非凡的算法,就是模仿
- 模仿分为三个步骤:(0)保留以后节点的下一个节点和第三个节点,因为第二个节点会间接更改,然而这两个须要保留下(1)虚构头节点指向转换前头节点的下一个节点(2)转后节点的下一个节点等于记录的以后节点的下一个节点 (3)第三个节点为之前记录的第三个节点
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */// 模拟法func swapPairs(head *ListNode) *ListNode { dummyHead := &ListNode{} dummyHead.Next = head cur := dummyHead for cur.Next != nil && cur.Next.Next != nil { tmp := cur.Next tmp1 := cur.Next.Next.Next cur.Next = cur.Next.Next cur.Next.Next = tmp cur.Next.Next.Next = tmp1 cur = cur.Next.Next } return dummyHead.Next}