struct ListNode{
    int val;
    struct ListNode *next;
};

struct ListNode* reverse(struct ListNode* head)
{
    struct ListNode* new_head = NULL, *tmpNode;
    while(head)
    {
        tmpNode = head->next;
        head->next = new_head;
        new_head = head;
        head = tmpNode;
    }
    return new_head;
}