2017-04-11 113 views
-2

所以,我有这种方法来检查我的队列数组是否在减少,当我检查时的问题是如果两个第一项减少,它表示整个队列正在减少,但我想它会遍历整个阵列的每个成员。 递减意味着每个整数优于下一个整数,直到队列结束。我的if,else语句是否错误?与flag如果else语句带有标志C++

template<class T> 
bool queue<T>::isDecreasing() const { 

    bool flag=false; 

    for (size_t i = 0; i < _capacity; i++) { 
     if(elements[i]>elements[i+1]){ 
      flag = true; 
      return flag; 

     }else if(elements[i]<=elements[i+1]){ 
      flag=false; 
      return flag; 
     } 
    } 
    return flag; 
    } 
+0

你知道什么'return'语句的意思? –

+0

这意味着返回正确的值? – Simo

+0

与你的问题无关,但我确定希望你的数组元素至少有'_capacity + 1'个元素。 –

回答

0

开始到true: 如果减少,我应该布尔返回true,否则应返回false。然后在每次迭代中使用if语句检查您按降序排列的数组假设。如果不正确,请设置为false并打破循环。 此外,循环应运行n-1次(n是元素的数量),因为在每次迭代中,您正在访问current和下一个元素的值。因此,在第n-1次迭代中,您将访问倒数第二个和最后一个元素的值。

template<class T> 
bool queue<T>::isDecreasing() const { 

bool flag=true; 

for (size_t i = 0; i < _capacity - 1; i++) { 
    if(elements[i]<=elements[i+1]){ 
     flag=false; 
     break; 
    } 
} 
return flag; 

}

+0

这是非常有帮助 – Simo

+0

很高兴我能帮到你 –