天天看点

剑指offer——反转链表

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead==nullptr||pHead->next==nullptr)//空或者只有一个节点
            return pHead;
        ListNode *pre,*mid,*post;
        pre=pHead;
        mid=pre->next;
        while(mid){
            post=mid->next;
            mid->next=pre;
            if(pre==pHead)//需要把第一个节点的next设置为nullptr
                pre->next=nullptr;
            pre=mid;
            mid=post;
        }
        return pre;
    }
};      

继续阅读