注册 登录
编程论坛 C语言论坛

求教一个递归链表操作的问题

小焦叔叔 发布于 2020-03-28 13:05, 1797 次点击
我在网上看到一些递归链表操作的例程,有一个小问题想不通,特来向高手们求教:
没有返回值的递归函数有没有回归过程?比如:下面程序片段里的正向输出和反向输出。


struct Link
{
    unsigned int dat;
    struct Link *next;
};

typedef struct Link Link;

Link *head;

void P_PrintLink(Link *head)
{
    if(head)
    {
        printf("%d\n",head->dat);
        P_PrintLink(head->next);
    }
}

void I_PrintLink(Link *head)
{
    if(head)
    {
        I_PrintLink(head->next);
        printf("%d\n",head->dat);
    }
}


[此贴子已经被作者于2020-3-28 13:18编辑过]

4 回复
#2
forever742020-03-28 21:56
没有返回值它也是函数啊
常规函数肯定是从哪儿来的就回哪儿去
没有返回值只不过是调用过程的现场保护和恢复工作量小了点
#3
小焦叔叔2020-03-29 13:08
void I_PrintLink(Link *head)
{
    if(head)
    {
        I_PrintLink(head->next);   //①
        printf("%d\n",head->dat);  //②这里想不明白
    }
}

上面的函数里,我想不明白回归的时候,函数从①运行到②了,又怎样返回到上一级的①的?
#4
小焦叔叔2020-03-29 13:10
递归链表操作是我新学的东西,不懂多少,请见谅!
#5
小焦叔叔2020-03-29 13:23
只有本站会员才能查看附件,请 登录


是这样理解的吧?
1