跳到主要内容

24-两两交换链表中的节点

题目描述

原题链接

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

例子:

给定 1->2->3->4, 你应该返回 2->1->4->3.

这里简单的使用双指针加递归

/*
* @lc app=leetcode.cn id=24 lang=golang
*
* [24] 两两交换链表中的节点
*/

// @lc code=start
/**
* 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
}

var p, q, r *ListNode
p = head
q = head.Next
r = q.Next

q.Next = p
p.Next = swapPairs(r)

return q
}

// @lc code=end