在这里我给出了一个代码来打印链接列表的反转。递归函数如何在堆栈概念的链接列表中工作?
fun1()以相反的方式打印给定的链接列表。对于链接列表1-> 2-> 3-> 4-> 5,fun1()打印5-> 4-> 3-> 2-> 1。
void fun1(struct node* head)
{
if(head == NULL)
return;
fun1(head->next);
printf("%d ", head->data);
}
任何人都可以解释如何在每次调用fun1()时构建栈帧吗?我期待链接列表的最后一个节点将被打印。但我正在以相反的顺序获取链接列表。它没有使链表反向。它只是反向打印。我认为这是由于像Push/Pop这样的堆栈操作。但我不完全清楚。请在图表中逐步操作的帮助下帮助我理解。
这个问题还不清楚。您的代码以相反的顺序打印列表的内容,它不会尝试以相反的顺序重建列表。看起来这让你感到惊讶。你是否要求代码实际上颠倒清单?或者解释当前的代码是如何工作的? – djna