剑指offer--反转链表

反转链表
输入一个链表,反转链表后,输出新链表的表头。

思想:如果要使得链表反转,就要next的next 指向它,但是这样next ->next就会丢失成为野指针,所有要先那一个变量把它存起来,然后在后移,改变下一个的指针,最后 ,phead 的next 设置为空,在最后的结构体指针赋值给phead返回回去。

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead == NULL || pHead->next == NULL) 
            return pHead;
        ListNode* cur = pHead;
        ListNode* _next = pHead->next;
        pHead->next = NULL;
        ListNode* nnext = NULL;
        while(_next != NULL)
        {
            nnext = _next->next;
            _next->next = cur;
            cur = _next;
            _next = nnext;
        }
        pHead = cur;
        return pHead;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_40921797/article/details/81633954
今日推荐