---
# System prepended metadata

title: Leetcode 206. Reverse Linked List
tags: [Leetcode]

---

# Leetcode 206. Reverse Linked List 
###### tags: `Leetcode`

題目 
Given the head of a singly linked list, reverse the list, and return the reversed list.

 

Example 1:


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


Input: head = [1,2]
Output: [2,1]
Example 3:

Input: head = []
Output: []
 

Constraints:

The number of nodes in the list is the range [0, 5000].
-5000 <= Node.val <= 5000


```


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){
    if(head == NULL)
    {
        return NULL;
    }
    struct ListNode* next;
    struct ListNode* pre;
    struct ListNode* current;
    
    next = NULL;
    pre = NULL;
    current = head;
    
    while(current!=NULL)
    {
        next = current->next;
        current->next = pre;
        pre = current;
        current = next;
    }
    
    return pre;
}
```