字符串中数字元素去重
给定一个字符串,字符串是有序的整数集合,逗号相连,移除相同的数字,使每个数字只出现一次
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node
{
char crr[32];
struct node* next;
}link;
link* head()//创建头节点
{
link*p=(link*)malloc(sizeof(link));
strcpy(p->crr,"-1");
p->next=NULL;
return p;
}
int add(link*p,char* arr)//入表
{
link*ptem=p;
while(ptem->next!=NULL)//将指针移动到要最后节点
{
ptem=ptem->next;
}
if(strcmp(ptem->crr,arr)==0)//将最后节点数据和传入数据对比,如果相同则不入
{
return 0;
}
link*pnew=(link*)malloc(sizeof(link));//节点放在链表最后
strcpy(pnew->crr,arr);
ptem->next=pnew;
pnew->next=NULL;
return 0;
}
int main()
{
char str[128]={0},arr[32]={0};
link*p=head();
link*ptemp=p;
scanf("%s",str);
int i,j,k=0;
for(i=0;str[i]!='\0';i++)
{
j=0;
while(str[i]!=','&&str[i]!='\0')//将一段数字暂时存放在arr
{
arr[j]=str[i];
j++;
i++;
}
add(p,arr);
}
while(ptemp->next!=NULL)//遍历打印测试(可以遍历输出最后结果,相当于是对这个题的拓展了)
{
k++;
ptemp=ptemp->next;
//printf("%s\n",ptemp->crr);
}
printf("%d\n",k);
return 0;
}
