【发布时间】:2015-05-14 21:39:37
【问题描述】:
我有一个程序,我想从链表中删除元素。该功能有效,但我无法返回真或假。当列表中没有值时,它会像我想要的那样返回 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;
}
【问题讨论】:
-
尝试将
return true;与它后面的语句交换。顺便说一句,return之后的任何语句都不会被执行,因为执行离开了函数(这就是return所做的)。