题解 | #反转链表#

反转链表

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;
    }

};
全部评论

相关推荐

吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务