编写函数,删除数组中所有的重复元素,使数组变成一个集合,函数返回集合中元素的个数。
书上习题
#include<stdio.h>int set(int a[],int n){int i,j,k;for(i=0;i<n;++i)//每次以a[i]为比较标准{j=i+1;k=i+1;while(j<=9){if(a[j]==a[i]){j++;n--;//每次删除(前移)数组的长度(n)减1}else{a[k]=a[j];k++;j++;}}}return n;}int main(){int a[10];int i;for(i=0;i<10;++i){scanf("%d",&a[i]);}set(a,10);int m=set(a,10);for(i=0;i<m;++i){printf("%d ",a[i]);}printf("\n");printf("%d",m);return 0;}/*33 4 4 3 5 3 22 5 6 8*/测试用例
运行结果
如果按常规方法,应该是每次发现相同的字符,后面所有的字符都需前移,按这种删除数据的快速算法,每次只需有一个字符前移。
可对照该图删除空格的思路进行理解。
如果觉得《删除数组中重复元素(C语言)》对你有帮助,请点赞、收藏,并留下你的观点哦!