c语言去除重复数据 c语言如何删除数组中重复元素?
c语言如何删除数组中重复元素?
1/*
2想法:
3将字符串存储在字符数组a中,设置要复制到数组B的值,遍历B的每个元素
4素数,与a中的每个元素进行比较,如果有相同的,则将B中的相应元素设置为-1。
5个输出元素非-1 in B.
6*/
7#-包括和ltstdio。H>
8#-包含字符串(&L)。H>
9 char a[100],B[100
]10 void del(int index,int len){
11 for(int i=0I<leni){
12 if(index==i)continue//下标相同,即不比较同一个元素并进入下一个循环
13 if(B[index]==a[i])B[index]=-1//使用同一个元素,设为-1
14}
15}
16 int main(){
17 gets(a)
18 memcpy(B,a,sizeof(a))//将a的元素复制到B
19 int len=strlen(a)//求a的长度
20 for(int i=0I<leni){
21 del(i,len)
22}
23 for(int i=0I<leni){//输出B中的非1元素
24 if(B[i]!=-1){
]25 printf(%C,B[i])
26}
]27}
28返回0
29}
int elimination(int a[,int count){//删除数组int i,J中的重复元素,K表示(I=0 I< count I){表示(J=I 1 J< count J){如果(a[J]==a[I]){表示(K=J 1 K< count K)a[K-1]=a[K]count--J--}}返回计数}}}
使用双循环,依次将每个值与后面的值进行比较。如果存在相同的元素,请删除该元素。删除时,可以将以下元素依次向前移动一位,同时将总长度减少一位。参考代码如下:intremoveurepeat(int*a,Intl){inti,J,K for(I=0I<li){for(J=i1j<lj)//比较以下元素并删除重复项。{if(a[J]==a[i])//发现重复元素。{for(k=J 1K<lk)//依次向前移动一位。A[k-1]=A[k]l--//总长度减1。}}}returnl//返回新的长度值。}
c 如何删除一个数组中的重复元素?
您可以使用双循环逐个比较元素。如果有重复,请删除它们。其思路如下:1。2对于任何元素,依次将其与以前的元素进行比较,如果存在重复的元素,则将其删除。三。删除操作可以将后续元素逐个向前移动,达到覆盖当前元素的效果。在此基础上,我们可以进行一些优化,即不需要每次删除元素时都将所有元素前移,而是将需要保留的元素放在“应该”位置,这样可以提高效率。以整数数组为例,参考代码如下:intremove_urepeat(int*a,Intl)//对起始地址为a,长度为L的数组进行去重,以返回值的形式返回新的长度。{inti,J,r=0//I,J是循环下标,r是重复数据消除后的元素总数,初始值为0For(I=0I<li){for(J=0j<rj)//检查是否有重复if(a[J]==a[I])breakif(J==R)//没有重复元素a[R]=a[I]//将当前元素放在重复数据消除数组的尾部,重复数据消除后增加总数。}Returnr//返回新的长度。}
c语言去除重复数据 c语言一维数组删除重复 C语言去掉数组重复值
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。