两两交换链表中的节点 Posted on 2021-01-28 Edited on 2024-06-03 In 数据算法 Word count in article: 503 Reading time ≈ 1 mins. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 图解如下: 123456789101112131415161718192021func swapPairs(head *ListNode) *ListNode { // 定义一个head之前的节点,作为初始节点 start := &ListNode{} // 初始节点指向头指针 start.Next = head // 第一个指针指向这个初始节点 prev := start // 开始循环,当前节点为nil,或Next为nil则结束循环 for head != nil && head.Next != nil { // 图解开始操作指针的next next := head.Next head.Next = next.Next next.Next = head prev.Next = next // 相当于移动指针,head的next已经改变 prev = head head = head.Next } // 最后返回初始节点的next,也就是后续节点都已经改变完成的节点 return start.Next}