C语言,删除数组中的重复数字然后输出?

时间:2021.08.18 发布人:levisliwei

C语言,删除数组中的重复数字然后输出?

已解决问题

谷歌levisliwei用户在2021.08.18提交了关于“富春山居图C语言,删除数组中的重复数字然后输出?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T16:39:57。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,谢了,下次有事儿别忘了找我 !

希望以下的回答,能够帮助你。

第1个回答

用户名:匿名用户  

#include<stdio.h>#问答include<string.h>#define基想现走齐操SIZE81voiddelete_repeat(char*str);voidbubble_sort(char*str);交钱将散感拿曲草intmain(){charstr[SIZE];gets(str);delete_项晶照说争都刚穿皮棉若repeat(str);bubble_sort(str);puts(st次例却谁胜部厚从川r);return0;}//删除重复字符voiddelete_repeat(char*str){/**判断数组内第i个字符是否与前i-1个字符存在重复:若重复,删除该字符,i之后的字符下标均减1,后重新判断新的第i个字符附若不重复,不做处理,继续款握散请西材迅液套遍历下一个*/for(inti=1;str[i]!='\0';i++){for(intj=0;j<i;j++){if(str[i]==str[j技想于考超讲称办大如]){for(intk=i;k<strlen(str)-1;k++){str[k]=str[k+1];}str[strlen(str)-1]='\0';i--;}}}}//冒泡排序voidbubble_sort(char*str){intswap;chartemp;intk=strlen(str);do{swap=0;for(inti=0;i<k-1;i++){挥青无识且林if(str[i]>str[i+1]){拉独华阳过今单河析急类swap=1;temp=str[i];str[i]=str[i+1];str[i+1]=temp;法星要}}k--;}whi场黑le(k>0&&swap);}扩展**删除排序数组利夫花先宗件收中的重复项注意事项不要使用额外的数组空间,必须在原地修改输入数组并在使用O(1)额外空间的业合误低条件下完成,意味着不能通过新建数组存放的方式解决。可以考虑增加一个游标的方式(命名为:index),遍历整个介单否亚影数组,当遇到前一个和后一个不相等的时候就给游标自增,这样的话对于相同的元素可以直接案知跳过不统计,最后返回”游标的大小+1“(也即不重复的元素的个数)。