一提起反转链表,非递归方式比较常用。但递归反而代码比较简洁,只需要寥寥数行。
巧在从链表尾节点开始操作。
Node * reverseList(List head)
{
if(head == NULL || head->next == NULL)
{
return head;
}
else
{
Node *newhead = reverseList(head->next); //先反转后面的链表,走到链表的末端结点
head->next->next = head;//再将当前节点设置为后面节点的后续节点
head->next = NULL;
return newhead;
}
}