gpt4 book ai didi

c - 为什么我无法从列表中删除节点?

转载 作者:行者123 更新时间:2023-11-30 18:22:07 25 4
gpt4 key购买 nike

每次我尝试执行此操作时,我都会在 if 语句中遇到未处理的异常?到目前为止,其他一切都工作正常。

      void DeleteEmp(struct node* head, int tempID){
struct node *curNode = head;
struct node *prevNode = NULL;
while (curNode != NULL) {
if(curNode->empId == tempID) { // error here
free(curNode);
printf("Employee %d removed from database", tempID);
}
prevNode = curNode;
curNode = curNode->next;
}
}

最佳答案

在释放节点的地方,在释放它之前,您需要进行一些指针交换。考虑一下这个

a->b->c->NULL

删除 b 应在释放之前执行以下操作。

a->c->NULL 

请注意,特殊情况是删除 c、删除 a(这会产生新的头)以及删除单例列表中的唯一节点。

请注意,类型 GList 和处理函数位于库 GObject 中,使用此列表代码而不是编写和调试它可能更有意义。

关于c - 为什么我无法从列表中删除节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com