【问题标题】:How to return true if deleted and false if not with bool如果删除,如何返回 true,如果不使用 bool,如何返回 false
【发布时间】: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 所做的)。

标签: c++ boolean return


【解决方案1】:

return true 之后的语句将不会被执行。

尝试换行。

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

【讨论】:

  • 现在无论该项目是否在列表中,它都会返回 false
  • 使用调试器,或者如果您对调试器过敏,请使用笔和纸单步执行您的程序,看看它是如何运行的。您还可以使用古老的打印语句艺术来注释您的程序流。不过我推荐调试器。
【解决方案2】:

你的代码有很多问题:

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

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 2021-09-11
    • 1970-01-01
    • 2020-08-14
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多