从链表中删除递归编号

时间:2016-06-01 16:43:31

标签: c recursion data-structures struct linked-list

你好我们做了一个func,它根据你要从链表中删除的号码递归删除链表。但删除后,如果我试图打印列表其堆栈,并有一个运行时错误,因为删除后,数字的位置没有任何内容。我该如何完成代码?

RDB$EXCEPTIONS

1 个答案:

答案 0 :(得分:2)

你释放了应该返回的东西,并且指针指向被释放的东西。这是错的。

你应该引入一个缓冲区来存储应该返回的内容。

struct node* delete_item(struct node* head, int num)
{
    if (head == NULL) { // Found the tail
        printf("not found\n");
        return NULL;
    }
    else if (head->data == num) 
    { // Found one to delete
        struct node* next = head->next;
        free(head);
        printf("num founded");
        return next;
    }
    else 
    { // Just keep going
        head->next = delete_item(head->next, num);
        return head;
    }
}