递归逆置带头结点单链表

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