[英]How to search name and delete node in doubly linked list in C?
我想在我的双向链接列表中搜索名称并删除,但是最后我遇到了分段错误(核心转储)错误。
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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.