删去一维无序数组中所有相同的数,使之只剩一个。
删去一维数组中所有相同的数,使之只剩一个。数组中的数无序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 5 2 3 4 2 4 5 6 6 8 6 6 7 4 7 8 9 6 9 10 10 2 10 3 1 1 10 3 删除后,数组中的内容应该是: 2 5 3 4 6 8 7 9 10 1。
#include <stdio.h> #define N 80 int fun(int a[], int n) { int i=0,j=0,k; int b[N]; for(k=0;k<n;k++) { b[k]=a[k]; } do { a[j++]=b[i]; for(k=0;k<n;k++) { if(b[k]!=a[j-1]) { b[i++]=b[k]; } } n=i; i=0; }while(a[j-1]!=b[i]); return j; } main() { int a[N]={2,2,5,2,3,4,2,4,5,6,6,8,6,6,7,4,7,8,9,6,9,10,10,2,10,3,1,1,10,3},i,n=30; printf("The original data :\n"); for(i=0; i<n; i++)printf("%3d",a[i]); n=fun(a,n); printf("\n\nThe data after deleted :\n"); for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n"); }
运行结果