实现单链表的逆转函数,输入一个链表,反转链表后,返回翻转之后的链表。

类似题目很多,这里仅记录日后查看:

/*
只需要完成逆置链表函数
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;
        }
        // 单一
        if (pHead->next == nullptr) {
            return pHead;
        }

        auto tmp = pHead;
        auto res = pHead;
        res = nullptr;

        while (pHead != nullptr) {
            tmp = pHead;
            pHead = pHead->next;

            tmp->next = res;
            res = tmp;
        }

        return res;
    }
};