如何在C中的双向链表中搜索名称和删除节点?

Wenxuan Li

我想在我的双向链表中搜索名称并删除,但最终出现了 Segmentation fault (core dumped) 错误。

typedef struct NODE {
  char *name;
  struct NODE *next;
  struct NODE *prev;
} node_t;

void delnode(struct NODE** head, char* search_name) {
                    struct NODE* search_node = 
                           (node_t*)malloc(sizeof(node_t));
                    struct NODE* current = *head;
                    search_node->name = search_name;
                    while(current->name!=search_name)
                        current = current->next;
                    current->prev->next = current->next;
                    current->next->prev = current->prev;
                    current->prev = NULL;
                    current->next = NULL;
}
谢尔盖

并且不要忘记更新 的值*head我将尝试将所有评论总结如下:

void delnode(struct NODE** head, char* search_name) {
    struct NODE* current;
    for(current=*head; current; current = current->next) {
        if (!strcmp(current->name, search_name)) {
            if (current->next)
                current->next->prev = current->prev;
            if (current->prev)
                current->prev->next = current->next;
            if (current == *head)
                *head = current->next;
            current->prev = NULL;
            current->next = NULL;
            free(current);
            return;
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章