链表删除功能异常 我有一些研究要做的是即将到来的C++评估,我的DELTENENODE函数有问题。我知道问题存在于函数的某个地方,因为我复制了以前的deleteNode函数,它工作得很好。我所有的其他pushback/pushfront函数都工作得很好,我宁愿知道问题,也不愿忽略它,但我一生都无法发现它
因此,链表存储的是员工姓名(字符串)和工资(双倍)。My deleteNode与传入的员工姓名和字符串参数匹配。如果有人能发现我的错误,那将对我的学习大有帮助链表删除功能异常 我有一些研究要做的是即将到来的C++评估,我的DELTENENODE函数有问题。我知道问题存在于函数的某个地方,因为我复制了以前的deleteNode函数,它工作得很好。我所有的其他pushback/pushfront函数都工作得很好,我宁愿知道问题,也不愿忽略它,但我一生都无法发现它,c++,C++,因此,链表存储的是员工姓名(字符串)和工资(双倍)。My deleteNode与传入的员工姓名和字符串参数匹配。如果有人能发现我的错误,那将对我的学习大有帮助 bool EmployeeList::deleteNode(std::string n){ EmployeeNode *leadptr = head, *trailptr = nullptr; if (head != nullptr){ if (head->emp.name == n){ head = he
bool EmployeeList::deleteNode(std::string n){
EmployeeNode *leadptr = head, *trailptr = nullptr;
if (head != nullptr){
if (head->emp.name == n){
head = head->next;
delete leadptr;
return true;
}
else{
while (leadptr != nullptr && leadptr->emp.name != n){
trailptr = leadptr;
leadptr = leadptr->next;
}
if (leadptr = nullptr){
return false;
}
else{
trailptr->next = leadptr->next; //access violation here, leadptr may be null
delete leadptr;
return true;
}
}
}
}
这是一项任务
if (leadptr = nullptr){
更正将是
if (leadptr == nullptr){
if(leadptr=nullptr)
您需要=
在这里。@Mark Lordan在编译时打开所有警告,或者至少阅读您收到的警告消息时,这很容易被检测到。@πάνταῥεῖ 我没有收到任何警告消息,只是一个访问冲突,没有任何有用的信息。你能解释一下我是如何得到这些警告选项的吗?@MarkLordan取决于你的工具链,但是对于GCC来说,它是-Wall
@MarkLordon这样的错误已经被编译器发现了(它们只是被称为警告:警告是你代码中的逻辑错误)。您的代码应该编译为零警告。您可以让编译器用一个简单的标志将警告视为错误,这样您就可以看到这些逻辑错误。我还将增加警告的攻击性(更多的旗帜打开更多的警告)。