如果删除则返回true,如果没有bool则返回false

时间:2015-03-12 16:07:07

标签: c++ boolean return

我有一个程序,我想从链表中删除元素。该功能有效但我在返回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;    
  }

2 个答案:

答案 0 :(得分:0)

return true之后的陈述将不会被执行。

尝试交换线条。

使用调试器会比发布到StackOverflow更快地捕获它。

答案 1 :(得分:0)

您的代码中存在很多问题:

  • 首先不要在for循环中返回true,你永远不会循环!
  • 在循环延续测试中,首先针对NULL进行测试,在访问item之前,您应该确保curr不是NULL
  • false的末尾返回if (curr!=NULL),因为这是元素删除的情况,并在每次删除时返回true