题解 | #反转链表#

反转链表

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

  1. 这道题完全可以用递归的思想来解决,首先考虑极端情况,pHead为空或者pHead->next为空的时候,直接返回pHead即可。 2.我们此时考虑假设1->2->3->4->5这个序列已经反转完成了一部分,即此时有1->2->3->reverse_node 3.此时我们简单的将reverse_node(pHead->next->next)的地址给当前的pHead即可,然后断开3到reverse_node的连接(即让pHead->next = NULL) 完整代码如下:
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead == NULL || pHead->next == NULL)
            return pHead;
        ListNode* reverse_node = ReverseList(pHead->next);
        pHead->next->next = pHead;
        pHead->next = NULL;
        return reverse_node;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务