当前位置:首页 » 编程语言 » c语言去除相邻重复项
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言去除相邻重复项

发布时间: 2022-03-14 03:38:16

‘壹’ 如何去除重复字符c语言

#include<stdio.h>
int main(void)
{
char s[100];
int i, j, n, k;
printf("请输入一串有重复字符的字符串:\n");
gets(s);
for (n = 0; s[n] != '\0'; n++) ;
for (i = 0; i < n; i++)
{
for (j = k = i + 1; j < n; j++)
if (s[j] != s[i])
s[k++] = s[j];
s[k] = '\0';
}
printf("去掉重复字符后结果为:\n");
puts(s);
}

‘贰’ C语言编写一个函数,将字符串中连续重复出现的字符去除

展开全部
C语言自定义函数,一次性去除连续重复字符,参考代码如下:
#include
char
*fun(char
*str)
{
int
i=1,j=0;
if(str==NULL)
return
NULL;
if(str[0]==0)
return
str;
while(str[i]!=0)
if(str[j]!=str[i])
str[++j]=str[i++];
else
++i;
str[j+1]=0;
return
str;
}
int
main()
{
char
str[500];
gets(str);
puts(fun(str));
return
0;
}

‘叁’ 怎么删除相邻的重复项所在的行而不删除其他不相邻的行所在的列

你的重复项所在的行安不上,主题他不相离的行锁在这里。这个问题该怎么给你解?

‘肆’ C语言删除一个整型数组里面重复的元素

利用双重循环,将每个值依次与其后面的值相比较,如果有相同的则删除该元素即可。

删除时,可以使用将后面元素依次向前移动一位,同时总长度减一的方式。

参考代码如下:

intremove_repeat(int*a,intl)
{
inti,j,k;

for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)//对后面每个元素比较,去重。
{
if(a[j]==a[i])//发现重复元素。
{
for(k=j+1;k<l;k++)//依次前移一位。
a[k-1]=a[k];
l--;//总长度减一。
}
}
}

returnl;//返回新的长度值。
}

‘伍’ c语言删除重复数据

程序的基本思路是把输入的字符串放到a[100]字符组中,然后把a[100]中所有不重复的字符添加到b[100]中,间接完成对字符串中的重复字符的删除

#include<stdio.h>
void main()
{
char a[100],b[100];
//定义两个字符组,a[100]用来接收输入的字符串,b[100]用来存储不重复的字符
int pa=0,pb=0,i,flag;
scanf("%s",a);
//输入字符串到a[100]中,用scanf读入到a[100]中会自动在a[100]中字符串结束的地方加上'\0'
for(pa=0;a[pa]!='\0';pa++)
//for循环结束的条件是a[pa]==0,也就是从a[100]字符组中读取一个字符,直到没有
{
flag=1;
//flag是个标志符,当flag==1时,说明这个字符(下句中的a[pa])是第一次出现,应该加入到b[100]中
//如果flag==0,说明这个字符(下句中的a[pa])重复了,不应该加到b[100]中
for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;
//把a[100]中读取的字符a[pa]与b[100]中的所有字符进行比较,如果b[i]==a[pa]
//说明这个字符已经在b[100]中了,也就是重复字符了,所有将flag=0,不能加入b[100]中
//如果a[pa]与b[100]中的所有字符都不相等,说明这个字条是第一次出现,应该加到b[100]
if(flag)
{
b[pb]=a[pa];pb++;
}
//如果flag==1,则将a[pa]这个字符加入到b[100]中,然后将pb加1
}
b[pb]='\0';
//当所有的不重复的字符都加入到b[100]中时,将b[100]中字符结束的地方加'\0',也就是b[pb]='\0'
//因为字符串都是民'\0'结尾的,所以加上这句
printf("%s\n",b);
//输出b[100]中的字符串,也就是删除过重复字符之后的了
}

‘陆’ c语言栈的应用输入一个字符串,删除其中相邻的两个相同字符

#include<stdio.h>

int main(){

char s[1000];

int i=0;

scanf("%c",&s[i]);

while(s[i]!=' '){

scanf("%c",&s[++i]);

if(s[i]==s[i-1])

i-=2;

}

s[i]='';

if(s[0])puts(s);

else printf("None");

}

‘柒’ c语言删除数据中重复的值

int temp=0;
int same=0;
for(int i=0;i<num;i++)
{
for(int j=0;j<=temp;j++)
{
if(strTemp[i].compare(strReturn[j]))
{
same=1;
}
}
if(same==1)
{
same=0;
strReturn[++temp]=strTemp[i];
}
}
最后的strReturn 保存的就是你要的东西,简单写了一下
有些细节 你自己琢磨一下吧

‘捌’ c语言链表 删除相同的元素值

你只是对相邻的元素进行比较,所以只能删除相邻且相同的元素。如果按照你的思想,则要先经排序后的链表,再执行Puge(L)才能删除链表中所有的相同的元素。
以下是我写的一个链表排序(冒泡法):
/*单链表排序(mark=1,降序;mark=0,升序)*/
void SortList(LNode *L,int mark)
{
int i,j,change=TRUE;
ElemType temp;
LNode *p=L->next,*q;
if(p && (p->next)) //如果单链表长度<2,则不用排序
{
for(j=1;j<L->data && change;j++)
{
change=FALSE;
p=L->next;
q=p->next;
for(i=0;i<L->data-j;i++)
{
if((q->data>p->data && mark) || (q->data<p->data && (!mark)))
{
temp=p->data;
p->data=q->data;
q->data=temp;
change=TRUE;
}
p=q;
q=q->next;
}
}
}
printf("排序成功\r\n");
}
/*删除链表中相同的数据项(基于排序)*/
void DelSameItem(LNode *L)
{
LNode *p,*q;
SortList(L,0);
p=L;
q=L->next;
while(q)
{
if(p->data==q->data)
{
q=q->next ;
p->next =q;
}
p=p->next ;
q=q->next ;
}
}

‘玖’ c语言程序要求指定删除字符串中的重复项

C语言实现如下:
#include<stdio.h>
#include<string.h>
void main()
{
char c[1000];
int f[1000],max=0,len,n=0,m[256]={0},i;
gets(c);

‘拾’ C语言删除相同结点问题

p1释放掉以后,循环体里的p1=p1->next执行不下去了,稍微改下:

TeleBook *DeleteSame(TeleBook *head)
{
TeleBook *p,*p1,*temp;
for(p=head->next;p!=NULL;p=p->next)
for(temp=p,p1=p->next;p1!=NULL;p1=temp->next) //这里修改
if( (strcmp(p1->name,p->name)==0) && (strcmp(p1->phonenum,p->phonenum)==0) && (strcmp(p1->email,p->email)==0) )
{
temp->next=p1->next;
free(p1);
}
else

{

temp = temp->next;

}

printf("重复项清理完毕!\n");
return(head);