www.jbmf.net > 从数组中删除一个元素

从数组中删除一个元素

del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数.函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素).函数的原型为:int del (int a[10],int n,int x) (1)请实现这个函数,并完成测试.[参考解答] [cpp] view plain

main() { int i,j,x,a[]={12,5,4,23,8,18,41,34,15,9}; printf("输入要删除的数:"); scanf("%d",&x); for(i=0;i<10;++i) { if(x==a[i]) { for(j=i;j<9;++j) //删除指定的数 a[j]=a[j+1]; a[9]=0; break; } } if(i==10) printf("没有找到指定的数"); else for(i=0;i<9;++i) //输出删除后的数组 printf("%d ",a[i]); }

先找到这个元素在数组中的位置n,然后:void remove_from_array(int *a, int n, int &l)//从数组a中删除第n个元素.l为数组原始长度,引用传参,所以可以将新的长度带回主调函数.如果成功,函数返回0,否则函数返回-1. { if(a == NULL || n<0 || l < 0 || n>=l)return ; int i; for(i = n; i < l-1; i ++) { a[i] = a[i+1];//依次用后续一个元素覆盖前一个元素,直到数组尾. } l--; }

从数组中删除元素,例如:数组 int arrys={1,2,3,4,5,} 如何删除“3”这个元素 代码:public class $ { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; System.out.print("删除前:"); show(arr); int[] brr = new int[arr.length - 1]; int

for(int i=0; i<length;i++){ for(int j=0; j<i;j++){ if(arr[j]=arr[i]){ for(int k=i+1;k<length;k++){ arr[k-1]=arr[k]; } length--; break; } }}

直接把元素后一位覆盖前一位就行了 最后把数组最后一位清空即可

设数组大小为M,删掉第N个元素.int i; for(i=N;i<M;i++) a[i-1]=a[i]; a[M-1]=0;

从要删除的元素开始,将数组后面的元素覆盖前面的元素,就把这个元素删除掉了.覆盖时注意从要删除的元素开始往后遍历覆盖.

例如你想删除a[1],用个命令free(a[1]);就可以了

// 写一个泛型方法可以适应大部份类型的需求.// ----------------------------------------------/** * @param <T> 数组中的元素类型 * @param arrs 需要删除元素的数组. * @param index 需要删除的元素的索引(出界时抛异常). * @return 指定类型的新数

网站地图

All rights reserved Powered by www.jbmf.net

copyright ©right 2010-2021。
www.jbmf.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com