1.第一种:使用一维数组删除数组中相同的数
#include <stdio.h>
#define N 19
int fun(int a[],int n){
int i,j=1;
for(i=1;i<n;i++){
if(a[j-1]!=a[i])
a[j++]=a[i];
}
return j;
}
void main(){
int a[N]={2,2,2,3,4,4,8,9,5,6,6,6,6,7,7,9,10,10,10},i,n=19;
printf("The original data:\n");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
n=fun(a,n);
printf("\n The data after delelted:\n");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
以上方法其实只是把数组中相同的元素放在数组的后半部分了,输出时只输出前半部分,前半部分的数是唯一的。
这个方法只是把数组的数前后移动了一下而已。
2.第二种方法:把这一个数组转移到另一个数组中,在转移过程中如果有相同的就不插入
#include <stdio.h>
int fun(int a[],int b[],int N);
#define N 19
void main(){
int a[N]={2,2,2,3,4,4,8,9,5,6,6,6,6,7,7,9,10,10,10};
int b[N];
int i,n;
n=fun(a,b,N);
printf("\n The data after delelted:\n");
for(i=0;i<n;i++){
printf("%d ",b[i]);
}
printf("\n");
printf("%d\n",n);//删除后,数组中元素的个数
}
int fun(int a[],int b[],int n){
int i,j=0;
b[j]=a[0];
for(i=0;i<n;i++){
if(b[j]==a[i]){
continue;
}
j++;
b[j]=a[i];
}
j++;
return j;
}
以上方法通过两个数组,实现数组元素的转移,删除了数组中相同的元素。