如何从数组中删除一个元素
如题,删除一个元素后,后续的前移,如何实现?以下是我的代码,
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)
[解决办法]
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];
}
[解决办法]