题解 | #反转链表#
思路: 以tail链表为媒介,初始时以空指针prev插入tail->next处 这样就提取到了第一个数,将该数字赋值给prev 并插入tail的next  级tail-> next =prev  实现了第一关放到最后的功能。
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
  public:
    ListNode* ReverseList(ListNode *pHead) {
        if (pHead == nullptr)  // 判断传进来的列表是否为空
            return nullptr;
        ListNode* tail = pHead; // 将phead链表赋值给tail
        ListNode* prev = nullptr; //定义一个空指针(空链表)
        while (tail) {
            //用next记录当前位置tail的下一个位置tail->next; 即如果输入1,2,3 next就指向 2,3
            ListNode* next = tail->next; 
            tail->next = prev; //当前位置的next指向其前一个位置处; tail为{1,{}}
            prev = tail; // 原本为prev空链表 现在给他赋值 为 prev = (1)
            tail = next; // 地一个数安排好后,将tail定义为后放的几个数
        }
        return prev;
    }
};
};