题解 | #反转链表#

反转链表

http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

定义指针变量p,q,r,初始化p=pHead指向函数参数指针头部,q=p->next指向p的下一个结点,r=q->next指向q的下一个结点,因为反转后头变成尾,所以指向头部的指针p的next赋值为空,之后执行循环,每次将中间结点q的next指向p,然后p,q,r向后挪一个位置,重复这个步骤直到r指针为空时跳出循环,此时得到的q指针即为反转后的链表头部

class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
       ListNode* p=(ListNode*)malloc(sizeof(ListNode));
       ListNode* q=(ListNode*)malloc(sizeof(ListNode));
        ListNode* r=(ListNode*)malloc(sizeof(ListNode));
       if(pHead==NULL)
           return NULL;
        if(pHead->next == NULL)
            return pHead;
        p=pHead;
        q=p->next;
        p->next=NULL;
        r=q->next;
        while(true){
            q->next=p;
            if(r==NULL)
                break;
            p=q;
            q=r;
            r=r->next;
        }
        return q;
    }

};
全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务