2017-01-09 10 views
-5

私は特定の値vを削除したい整数のコンテナを持っています。コンテナにはvの複数のコピーを入れることができますが、私は遭遇する最初のインスタンスを削除したいだけです。これを達成するためにコードを修正するにはどうすればよいですか?配列内の最初の値の出現を削除する方法は?

void delete (int s[] , int &top , int v) 
{ 
    int ts[size] ; 
    int ttop=-1; 
    while(top!=-1) 
    { 
     if(s[top]!=v) 
      push(ts,ttop,s[top]); 
     pop(top); 
    } 
    while(ttop!=-1) 
    { 
     push(s,top,ts[ttop]); 
     pop(ttop); 
    } 
} 
+1

この質問は意味がありません。 [質問する](http://stackoverflow.com/help/how-to-ask)をお読みください。 –

答えて

0

最初の検索の後に設定されるフラグを定義する必要があります。

void delete (int s[] , int &top , int v) 
{ 
    bool found = false; 
    int ts[size] ; 
    int ttop=-1; 
    while(top!=-1) 
    { 
     if (s[top]!=v) 
     { 
      push(ts,ttop,s[top]); 
     } 
     else 
     { 
      if (found == false) 
      { 
       found = true; 
       push(ts,ttop,s[top]); 
      } 
     } 
     pop(top); 
    } 
    while(ttop!=-1) 
    { 
     push(s,top,ts[ttop]); 
     pop(ttop); 
    } 
} 

foundが偽である限り、要素が一致するかどうかもチェックされます。 foundがtrueになると、一致したとしても項目は常に含まれます。

これはこれを行う最も効果的な方法ではないことに注意してください。単にトリックを行うようにコードを変更する方法です。

+0

私は毎回1つの値を削除したいが、すべて同じ値ではない。 – qqq

+0

@ M.ALi申し訳ありません。今は正しいはずです。 –

関連する問題