---
description: Linked List
---

# LeetCode 24. Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

**Example 1:**![](https://assets.leetcode.com/uploads/2020/10/03/swap_ex1.jpg)

```
Input: head = [1,2,3,4]
Output: [2,1,4,3]
```

**Example 2:**

```
Input: head = []
Output: []
```

**Example 3:**

```
Input: head = [1]
Output: [1]
```

**Constraints:**

* The number of nodes in the list is in the range `[0, 100]`.
* `0 <= Node.val <= 100`

&#x20;**Follow up:** Can you solve the problem without modifying the values in the list's nodes? (i.e., Only nodes themselves may be changed.)

## Solution:

[English Version in Youtube](https://youtu.be/xHD8uzI3D3Y)

[中文版解答Youtube Link](https://youtu.be/eeV5zbeqous)

[中文版解答Bilibili Link](https://www.bilibili.com/video/BV1Wp4y1H72Z/)

```
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if (head == nullptr || head->next == nullptr) {
            return head;
        }
        
        ListNode* new_head = head->next;
        
        head->next = swapPairs(new_head->next);
        new_head->next = head;
        
        return new_head;
    }
};
```
