/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
 */
struct ListNode* ReverseList(struct ListNode* head ) {
    if (head == NULL) {
        return NULL;
    }

    struct ListNode* prev = NULL;//反转链表
    struct ListNode* current = head;//当前链表
    struct ListNode* next;//下一个节点

    while (current!= NULL) {
        next = current -> next;//向后遍历使用
        current -> next = prev;//把当前链表的前节点放到尾节点去
        prev = current;//尾节点向前遍历
        current = next;//向后遍历使用
    }

    return prev;//输出反转链表
}