c - 从链表中删除某些数字(递归)

标签 c pointers recursion linked-list bag

大家好,我正在尝试创建一个删除特定数字的函数 从链接列表中具有此编号的所有单元格中,但我的删除功能仅删除他到达末尾的第一个单元格,然后返回到主单元格 这是我的代码:

struct num* deleteCell(struct num* point, int numdelete)
{
    struct num* tempdelete = point;
    if (point == NULL)  // found the tail and dont found any match to delete
    {
        printf("not found\n");
        return NULL;
    }
    else if (point->number == numdelete)// found one to delete
    { 
        tempdelete = point->pNext;
        free(point);
    }
    else// Just keep going 
    { 
        point->pNext = deleteCell(point->pNext, numdelete);
    }
    return tempdelete;
}

(point是指向第一个单元格的指针,numdelete是我要删除的数字) 感谢各位帮忙!!!!

单独

最佳答案

struct num* deleteCell(struct num* point, int numdelete) {
  if (point == NULL) {
     return NULL;
  }

  if (point->number == numdelete) { 
    num* tempdelete = point->pNext;
    free(point);
    return deleteCell(tempdelete, numdelete);
  }

  point->pNext = deleteCell(point->pNext, numdelete);
  return point;
}

关于c - 从链表中删除某些数字(递归),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709566/

相关文章:

f# - 我的 rec 函数是尾递归的吗?

c - 如何使函数返回动态分配的二维数组?

java - 如何使用 JNA 将指向结构体数组的指针传递给 java 中的函数?

c - C-堆栈实现-malloc问题

c++ - 指向数组声明的指针

python - 当 Numpy/Scipy 指针被复制到局部变量时会发生什么?

C++:这是递归删除链表的正确方法吗?

c++ - 二叉搜索树赋值运算符(递归)

c - 对 header 中包含的函数的 undefined reference

c - 字符串重新分配的意外行为