我有一个程序,我想从链表中删除元素。该功能有效但我在返回true或false时遇到麻烦。当列表中没有值时,它会像我想要的那样返回false,但是当列表不为空时我尝试删除列表中没有的值,它返回true并且我希望它返回假的。
bool list::deleteElement(int element)
{
node *curr, *prev;
prev = NULL;
if (head!=NULL)
{
for (curr=head; curr->item!=element&&curr!=NULL;curr= curr->next)
{
return true;
prev=curr;
}
if (curr!=NULL)
{
if (prev==NULL)
{
head = head->next;
delete curr;
numberofelements--;
}
else
{
prev->next = curr ->next;
delete curr;
}
}
}
return false;
}
答案 0 :(得分:0)
return true
之后的陈述将不会被执行。
尝试交换线条。
使用调试器会比发布到StackOverflow更快地捕获它。
答案 1 :(得分:0)
您的代码中存在很多问题:
NULL
进行测试,在访问item
之前,您应该确保curr
不是NULL
。false
的末尾返回if (curr!=NULL)
,因为这是元素删除的情况,并在每次删除时返回true
。