> For the complete documentation index, see [llms.txt](https://ryukiedev.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ryukiedev.gitbook.io/wiki/shu-ju-jie-gou-yu-suan-fa/jian-zhi-offerswift/24.-fan-zhuan-lian-biao.md).

# 24.反转链表

## 题目

定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。

示例:

```cpp
 输入: 1->2->3->4->5->NULL
 输出: 5->4->3->2->1->NULL
```

限制：

```cpp
 0 <= 节点个数 <= 5000
```

注意：本题与主站 206 题相同：<https://leetcode-cn.com/problems/reverse-linked-list/>

* 来源：力扣（LeetCode）
* 链接：<https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof>
* 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

## 解法

> [GitHub](https://github.com/RyukieSama/RyukiePlayground/blob/main/剑指Offer.playground/Pages/24.反转链表.xcplaygroundpage/Contents.swift)

```swift
func reverseList(_ head: ListNode?) -> ListNode? {
    var node: ListNode?
    var temp: ListNode? = head

    while let current = temp {
        let n = ListNode(current.val)
        n.next = node
        node = n
        temp = current.next
    }

    return node
}
```
