字符串中数字元素去重
给定一个字符串,字符串是有序的整数集合,逗号相连,移除相同的数字,使每个数字只出现一次
#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; }