读书人

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

发布时间: 2012-10-23 12:12:22 作者: rapoo

如何从数组中删除一个元素
如题,删除一个元素后,后续的前移,如何实现?以下是我的代码,
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…

读书人网 >C语言

热点推荐