c - 在C中实例化临时静态列表头指针

标签 c list recursion

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);
 }
}

我有一个递归函数,它必须将一个元素插入列表中,但是当递归调用该函数时,它会进入无限循环。 如果“current”和“temp”是 self 声明的类型,如何将它们声明为静态? 我该如何解决这个问题?

typedef
       struct list{
              int elem;
              struct list*next;
              } list;

最佳答案

void add_tail_r (list* head, int elem)
{
    list* new = NULL;
    list* temp = head;

    while (temp->next != NULL)
    {
        temp = temp->next;
    }

    new = (list*) malloc (sizeof (list));
    new->elem = elem;
    new->next = NULL;

    temp->next = new;
}

我希望我没有犯任何错误,我目前没有 C 编译器。

它的预期功能是获取一个列表元素并向前迭代它的 ->next 指针,直到到达 NULL 值,这意味着我们已经到达了行尾。一旦我们到达该行,我们就可以使用 void* malloc (size_t size);

为新元素分配内存。

一旦我们到达该部分,我们就可以将其 ->elem 值分配给我们的 elem

编辑 #1 这会删除递归部分,如果需要,则丢弃它。

关于c - 在C中实例化临时静态列表头指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27236178/

相关文章:

recursion - 如何递归获取 XmlProvider 的所有 XElement 子项

c - 在 C 中的数组中存储和打印随机数

c++ - 如何检查 SQLite 数据库是否在 C/C++ 中打开

R - 当名称在变量中时按名称提取列表元素

Python读取sdf/mdl坐标: How to read until two spaces are met?

带有嵌套字典的 Python 字典总和列表

c - 循环遍历数组,增量不起作用

c - 使用 C 语言的 OS X 剪贴板

python - 为什么我的计算机中的 Python 列表不能容纳超过 693 个数字?

c - 一棵榕树的高度