【发布时间】:2014-12-02 04:28:23
【问题描述】:
void add_tail_r(list ** head, int elem)
{
list *current=*head;
list *temp = NULL;
if (current->next==NULL)
{
if (!( temp=(list *)malloc(sizeof(list )) ))
printf("Error");
temp->elem=elem;
temp->next=NULL;
current->next=temp;
return;
}
else
{
add_tail_r (current->next,elem);
}
}
我有这个递归函数,它必须将一个元素插入到列表中,但是当递归调用该函数时,它会进入一个无限循环。 如果它们是自我声明的类型,我如何声明“当前”和“临时”静态? 我该如何解决这个问题?
typedef
struct list{
int elem;
struct list*next;
} list;
【问题讨论】:
-
如果您希望它们保持递归部分的值,您必须将它们传递给函数。这也是你想要做的链表吗?
-
是的。我试图不在函数中传递两个索引,如果可能的话,我想在头文件中将它们保持私有。
-
为了确定, add_tail_r 应该将元素添加到最后一个位置?
-
当然,它必须在列表的尾部添加一个元素。
-
您不必为此使用递归,这是要求吗?