以下函数对第一个节点作为头的给定链表进行了什么操作?
void fun1(struct node* head)
{
if(head == NULL)
{
return;
}
fun1(head->next);
printf("%d ", head->data);
}
答案 0 :(得分:1)
就像你已经将列表元素推入堆栈然后将每个元素弹出并打印它直到堆栈为空。虽然使用调用堆栈而不是数据结构。
答案 1 :(得分:0)
假设你有这个:
head= |data=a
|next= |data=b
|next= |data=c
|next=NULL
现在你打电话给fun1(头):
call fun1(head):
calls fun1(head->next):
calls fun1(head->next->next):
calls fun1(head->next->next->next):
returns, because head->next->next->next is NULL
prints c (from head->next->next->data)
prints b (from head->next->data)
prints a (from head->data)
PS:您可能会发现了解如何针对此类问题逐步执行代码会很有帮助:http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/