【问题标题】:SIGSEGV segmentation fault when deleting a node from a linked list从链表中删除节点时出现 SIGSEGV 分段错误
【发布时间】:2017-10-28 05:14:00
【问题描述】:

我正在尝试从单链表中删除第一次出现的值。但是,这会在调用时产生分段错误。

typedef struct Node *node;
struct Node
{
    int data;
    node next;
};

node delete_node(int value, node l) {
    if (l == NULL){
      return NULL;
    }
    if (l->data == value) {
      node temp;
      temp = l->next;
      free(l);
      return temp;
    }
    l->next = delete_node(value, l->next);
    return l;
}

【问题讨论】:

  • 这甚至不应该编译(你缺少一个分号)。
  • 请添加与创建列表相关的部分和本次调用部分的代码。
  • 你混淆了价值和数据,对吧?

标签: c pointers linked-list singly-linked-list


【解决方案1】:

查看此站点的名称。 此代码可能会导致堆栈溢出。 当链表很长时。

附言

if (l->_value_ == value) {

可能是 l->数据

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 2019-03-03
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 2014-08-16
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多