【发布时间】:2026-01-15 23:00:01
【问题描述】:
我知道哪里出了问题,但我不知道如何改变它。请帮忙!唯一有效的是这个(CurrentNode->next == NULL),如果其他情况没有。我能做什么?
void Restaurant::deletereservation()
{
string name;
cout << "Enter name of customer that you want to delete: " << endl
<< "Name: ";
cin.ignore(80, '\n');
getline(cin, name);
ReservationNode *nodeIn = head;
ReservationNode *CurrentNode = head->next;
while ((CurrentNode != NULL) && (CurrentNode->Name != name))
{
nodeIn = CurrentNode;
CurrentNode = CurrentNode->next;
}
if (CurrentNode->Name != name){
cout << "Error!!!" << name << " is not found.Cant be deleted if there is no such person." << endl;
}
else{
if (nodeIn == head){
CurrentNode = head->next;
CurrentNode = head;
delete nodeIn;
}
else if(CurrentNode->next == NULL){
nodeIn ->next = NULL;
delete CurrentNode;
}
else{
nodeIn -> next = CurrentNode->next;
delete CurrentNode;
}
}
}
【问题讨论】:
-
你能放一个最小的可编译代码以允许调试和执行吗?只有一种方法,很难重现你的问题
-
您可以做的是,第一步:获取*.com 的tour,然后:阅读help center,并在此处学习How to Ask 可以回答的问题。任何人都无法帮助您,因为您的问题不符合minimal reproducible example 的所有要求。 C++ 函数并不存在于真空中。它们是否有效取决于您程序中的所有其他功能。你没有显示。没有人可以帮助您处理甚至没有显示的代码。这并不意味着你应该发布你的整个程序,而只是一个minimal reproducible example。
-
不太清楚你为什么声明
nodeIn。您使用nodeIn = CurrentNode;指向与CurrentNode相同的数据,然后您使用delete nodeIn;