void R_Print(LinkList L){ if(L->next!=NULL) R_Print(L->next); if(L!=NULL) printf("%d->",L->data); } void R_Ignore_Head(LinkList L){ if(L!=NULL) R_Print(L->next); } 想问一下这段代码啥意思
代码有个错误。R-Print里应该先检测NULL值。下面是改正了的代码,并加了注释。
void R_Print(LinkList L)
{
if (L!=NULL)
{
if (L->next!=NULL) // When there are next nodes, print those nodes first so that the data are printed in reverse order.
R_Print(L->next);
printf("%d->",L->data);
}
void R_Ignore_Head(LinkList L)
{
if (L!=NULL) // The linked list has a head node for easy operation. The head node does not contain data so skip it when printing values.
R_Print(L->next); // Call R-Print to print the linked list in reverse order
}
这主要是利用递归的栈的后进先出原理,通过递归查找next为空的节点(就是最后一个节点,然后再递归出来输出节点内容,相当于倒序输出所有节点内容
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632