题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
- 这道题完全可以用递归的思想来解决,首先考虑极端情况,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;
}
};