C语言删除数组元素

来源:百度知道 编辑:UC知道 时间:2024/05/03 06:43:43
一个具有10个元素的数组 1 3 3 2 5 1 1 5 6 6,删除相同元素后后变为 1 3 2 5 6,请大虾们帮下忙,最好给出全部程序,必须是删除法!
请给出更精确,简洁的算法,说明下,此程序百度和其它网上有很多答案但非最优化方案,我要的是能看的舒服的!凡采用CTRL+V/C方式的都不采纳。
请用自己的方法编!
满意加100分

/*我写了两种方法!!!方法一*/

#include <stdio.h>
int main()
{
int a[10]={1,3,3,2,5,1,1,5,6,6};
int i,j,k,x=10;/*x为数组中无重复有效元素的个数*/
for(i=0;i<x;i++)
{
for(j=i+1;j<x;j++)
{
if(a[i]==a[j])
{
x--;//发现重复时减1
for(k=j;k<x;k++)//移动数组
{
a[k]=a[k+1];
}
j--;
}
}
}
for(i=0;i<x;i++)printf("%d",a[i]);
printf("\n");
return 0;
}

/******************************************************************************
* 再写一种方法!!!
*此方法是把所有重复的都标识出来,然后生成一个新的无重复元素的数组
*******************************************************************************/

#include <stdio.h>
#define flag -1//此外定义了一个标识。把重复的无素赋值为此标识。
int main()
{
int a[10]={1,3,3,2,5,1,1,5,6,6};
int b[10];//用于存储有无重复元素的数组。
int i,j,x=10;//x为无重复有效元素个数
for(i=0;i<10;i++)
{