如果删除,如何返回 true,如果不使用 bool,则返回 false

How to return true if deleted and false if not with bool

本文关键字:返回 如果不 bool false true 何返回 如果 删除      更新时间:2023-10-16

>我有一个程序,我想从链表中删除元素。该函数有效,但我在返回真或假时遇到问题。当列表中没有值时,它会像我希望的那样返回 false,但是当列表不为空并且我尝试删除不在列表中的值时,它会返回 true,我希望它返回 false。

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后的语句将不会执行。

尝试交换线条。

使用调试器比发布到 StackOverflow 更快。

你的代码中有很多问题:

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