首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么从数组中删除一个元素

2012-10-23 
如何从数组中删除一个元素如题,删除一个元素后,后续的前移,如何实现?以下是我的代码,void delete_item(int

如何从数组中删除一个元素
如题,删除一个元素后,后续的前移,如何实现?以下是我的代码,
void delete_item(int a[], int item, int n)
{
  int i, j;
  for(i=0;i<n;i++)
  {
  if(a[i]==item)
  {
  for(j=i;j<n;j++)
  a[j]=a[j+1];
  n--;
  }
  }
}

int main()
{
  int n;
  int a[]={4,6,8,1,5,6,3,2};
  n=sizeof(a)/sizeof(int);
  printf("n=%d\n", n);
  delete_item(a, a[5], n);
  return 0;
}

执行结果:
a[0]=1
a[1]=2
a[2]=3
a[3]=4
a[4]=5
a[5]=8
a[6]=1628873474
a[7]=1628873474

如何将a[6]和a[7]彻底去掉?




[解决办法]
删除元素时顺便改变数组的长度n,即n要使用引用,void delete_item(int a[], int item, int &n)
[解决办法]

C/C++ code
void delete_item(int a[], int item, int& n) {   int i, j, nr;   for(i=0;i <n;i++)   {     if(a[i]==item)     {       nr+;       for(j=i;j <n;j++)         a[j]=a[j+1];       n--;     }   }   n -= nr; //减少个数}
[解决办法]
void delete_item(int a[], int item, int n)
{
int i, j;
i = 0;
while(a[i] != item) i++;
n--;
for(;i<n;i++)a[i]=a[i+1];
  
}

[解决办法]
探讨
引用:
C/C++ codevoid delete_item(int a[], int item, int& n) 

int i, j, nr; 
for(i=0;i <n;i++) 

if(a[i]==item) 

nr+; 
for(j=i;j <n;j++) 
a[j]=a[j+1]; 
n--; 


n -= nr; //减少个数 

 

$ gcc sort.c -o sort 
sort.c:24: error: parse error before '&' token 
sort.c: In function `delete_item': 
sort…

热点排行
Bad Request.