gpt4 book ai didi

c - 从链表中添加和删除节点的问题

转载 作者:行者123 更新时间:2023-11-30 17:28:31 25 4
gpt4 key购买 nike

我有一个程序,它必须从文本文件中获取输入,使用此输入创建一个链接列表,然后能够添加、删除、修改和查询该链接列表。

我的查询和修改功能运行良好。我的删除功能在特定情况下失败,并且我正在努力使用添加功能。编译器没有错误来帮忙。如果有人能指出我正确的方向,我将不胜感激。

添加功能给我带来了最大的问题。经过几个小时的调试和同事的帮助后,我最接近添加任何内容的就是改变

更新:感谢大家的反馈!在同事的帮助下,我最终发现了我遇到的主要问题。显然我传递的是一个值而不是引用。 ** 实现了添加和删除功能。

void add(employee **head, int addEMP_ID, char* addName, int addDept, int addRank, double addSalary) {
}

void delete(employee **head, int option) {
}

最佳答案

如果头节点是您要删除的节点,则在调用函数delete后它将被释放。然而,头指针仍然指向已经释放的头节点。这就是导致seg错误的原因。

一种改变方法是:

void delete(employee **head, int option) {

employee* current;
employee *del;
current = *head;

if (current != NULL) {
if (current->EMP_ID == option) {
del = *head;
*head = *head->next;
free(del);
return;
}
while (current->next != NULL) {
if (current ->next->EMP_ID == option) {
del = current -> next;
current->next = current ->next->next;
free(del);
return;
}
current = current -> next;
}
}
return;
}

关于c - 从链表中添加和删除节点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26024824/

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