2017-04-11 24 views
1

所以我想實現這個方法來知道整數是否在我的堆棧數組中連續出現兩次。這個整數是作爲一個參數,我想知道它是否連續發生兩次。不幸的是,我的方法總是返回false,你知道爲什麼嗎?找出堆棧數組中的下一個整數是否相同

template<class T> 
bool stack<T>::isConsecutive(const T & data) const{ 
    bool flag=false; 

    for (size_t i = 0; i < _top; i++) { 
     if(data==elements[i] && elements[i]==elements[i+1]){ 
      flag=true; 
     } 
     else { 
      flag=false; 
     } 
    } 
    return flag; 
} 
+3

你的旗幟將被重置爲假,因爲當你發現一個連續數字的實例時,你不會打破/返回,同時'i <_top'應該是'i <_top - 1',假設'_top '是棧的大小,ub被調用。 – George

+0

我添加了return語句,它工作!謝謝 –

回答

0

試試這個

template<class T> 
bool stack<T>::isConsecutive(const T & data) const{ 
bool flag=false; 

for (size_t i = 0; i < _top-1; i++) { 
    if(data==elements[i] && elements[i]==elements[i+1]){ 
     return true; 
    } 
    } 
return flag; 
} 

這將工作我猜。

+1

你可以擺脫'flag',因爲它總是'false' –

相關問題