题解 | #反转链表#

反转链表

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

class Solution { public: ListNode* ReverseList(ListNode* pHead) {

    if(pHead==NULL) return NULL;//注意程序鲁棒性
    
    ListNode* pNode=pHead;//当前指针
    ListNode* pReverseHead=NULL;//新链表的头指针
    ListNode* pPrev=NULL;//当前指针的前一个结点
    
    while(pNode!=NULL){//当前结点不为空时才执行
        ListNode* pNext=pNode->next;//链断开之前一定要保存断开位置后边的结点
        
        if(pNext==NULL)//当pNext为空时,说明当前结点为尾节点
            pReverseHead=pNode;

        pNode->next=pPrev;//指针反转
        pPrev=pNode;
        pNode=pNext;
    }
    return pReverseHead;
}

}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务