2017-01-09 114 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为真,它将始终包含该项目,即使它匹配。

请注意,这不是最有效的方法来做到这一点,只是修改您的代码,以便它的伎俩。

+0

我想每次删除一个值,而不是全部相同的值。 – qqq

+0

@ M.ALi对不起。现在应该是正确的。 –

相关问题