【发布时间】:2019-06-27 09:05:46
【问题描述】:
开始指向后面链表的第一个节点的下面函数的输出是什么?
1->2->3->4->5->6
void fun(struct node* start)
{
if(start == NULL)
return;
printf("%d ", start->data);
if(start->next != NULL )
fun(start->next->next);
printf("%d ", start->data);
}
【问题讨论】:
-
你认为输出是什么,为什么?注意打印和递归调用的顺序。
-
为什么不自己运行一下看看它提供的输出?
-
回答这个问题的方法是像电脑一样,但在纸上。写下最初的清单。开始追踪代码。当你到达
printf语句时,写下你认为会输出的内容。当遇到递归调用时,将当前位置和值添加到堆栈中。当遇到函数返回时,从堆栈中弹出。这个练习是一个测试,看看你是否理解递归的工作原理。 -
一个好的开始是使用一个只有一个节点的列表。然后一个有两个节点。然后一个具有三个节点。模拟计算机的操作。
标签: c data-structures linked-list