LinkNode*turn off (LinkNode * head){
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
}
以上我们创建了一个简单但函数还不是递归的。上述我们不可以从头开始,要从尾巴开始;这个时候需要递归一下到最后一个节点。即:
LinkNode*turn off (LinkNode * head){
LinkNode * newhead = turn off(head->next);//这里为啥是head->next因为需要走向下一个节点,每一次递归直到最后。
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
}
这种情况我们又有东西没考虑周全。如果说他只有一个节点或者是空的;
LinkNode*turn off (LinkNode * head){
if(head==NULL||head->next==NULL)//是空的话我们就直接返回头;
return head;
else{//不是的话我们就开始递归他;
LinkNode * newhead = turn off(head->next);//这里为啥是head->next因为需要走向下一个节点,每一次递归直到最后。
head->next->next = head;
head->next =NULL;
return head;//这里我们需要返回新的头(head);
}
}
这样其实代码已经完成了,但是还有一点个人之前不懂得(遇到的分析困难)
有所不对还望指出,本文只写了此题递归的中心思想;还有前面的创建表,打印表等自己去尝试一下
标签:head,off,递归,next,链表,NULL,LinkNode,逆序 From: https://blog.csdn.net/2402_85360089/article/details/142359440