标题:求教一个递归链表操作的问题
只看楼主
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
结帖率:78.57%
已结贴  问题点数:20 回复次数:4 
求教一个递归链表操作的问题
我在网上看到一些递归链表操作的例程,有一个小问题想不通,特来向高手们求教:
没有返回值的递归函数有没有回归过程?比如:下面程序片段里的正向输出和反向输出。


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编辑过]

搜索更多相关主题的帖子: 递归 操作 Link head 链表 
2020-03-28 13:05
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:20 
没有返回值它也是函数啊
常规函数肯定是从哪儿来的就回哪儿去
没有返回值只不过是调用过程的现场保护和恢复工作量小了点

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-03-28 21:56
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
得分:0 
void I_PrintLink(Link *head)
{
    if(head)
    {
        I_PrintLink(head->next);   //①
        printf("%d\n",head->dat);  //②这里想不明白
    }
}

上面的函数里,我想不明白回归的时候,函数从①运行到②了,又怎样返回到上一级的①的?

自学成才
2020-03-29 13:08
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
得分:0 
递归链表操作是我新学的东西,不懂多少,请见谅!

自学成才
2020-03-29 13:10
小焦叔叔
Rank: 1
来 自:广西 河池
等 级:新手上路
帖 子:59
专家分:2
注 册:2020-2-15
得分:0 


是这样理解的吧?

自学成才
2020-03-29 13:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500672-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.515323 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved