2017-04-11 12 views
1

だから、スタック配列に整数が連続して2回現れるかどうかを知るためにこのメソッドを実装しようとしています。この整数はパラメータとして取られ、2回連続して発生するかどうかを知りたい。残念ながら、私のメソッドは常に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'はおそらく' _ <_top - 1'でなければなりません。 'はスタックのサイズ、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

ありがとうございます。常に 'false'なので' flag'を取り除くことができます –

関連する問題