N-FX1-4
时间:2022-08-24 05:00:01
假设文本中包含由字母数字和下划线组成的单词、空格和标点符号,给定一段不超过1000字节的长度。
输出文本中最常见的标记符(假设C语言中的关键字不会出现在文本中)。
如果文本中没有标记符,则输出No identifier!↙
例输入:
abc def 2a 9iii,32,a_1,b_1,a_1.2a,2a↙
输出:
a_1↙
/* 假设文本中包含由字母数字和下划线组成的单词、空格和标点符号,给定一段不超过1000字节的长度。 输出文本中最常见的标记符(假设C语言中的关键字不会出现在文本中)。 如果文本中没有标记符,则输出No identifier!↙ 例输入: abc def 2a 9iii,32,a_1,b_1,a_1.2a,2a↙ 输出: a_1↙ */ # include # include # include typedef struct node { char ch[100]; struct node * link; }NODE; // 定义链表中每个节点的内容; NODE * phead; // 带头节点的链表生成正序,并将整形数字和字符读入每个节点; NODE * p,*q; void Creat( char a[]){ p = (NODE *)malloc(sizeof(NODE)); strcpy(p->ch, a); p->link = NULL; q->link = p; q = q->link; } // 删除不符合要求的节点-需要补充 NODE* Delete(NODE *p,NODE*q) { q->link=p->link; free(p); if(q->link!=NULL&&q !=NULL){ p = q->link;//TODO } else p=NULL; return p; } struct mmm { char str[100]; int time; }; struct mmm ci[100]; int main() { char tem, str[100][50]={0}, prim[1001]={0}; int num = 0; int j = 0; gets(prim); for(int i = 0;i < strlen(prim);i ) { tem=prim[i]; if(tem==','||tem==';'||tem==' ') { num ; j = 0; //TODO } else if(tem=='.'&&tem=='\0') { break; } else { str[num][j]=tem; j ; } } q =(NODE *) malloc(sizeof(NODE)); q->link = NULL; phead = q; for(int i=0;i<=num;i ) { Creat(str[i]); } int i = 0; while(phead->link!=NULL) { p = phead->link; q = phead; strcpy(ci[i].str,p->ch); while(q->link!=NULL) { if(strcmp(ci[i].str, p->ch)==0) { ci[i].time ; p=Delete(p,q); q->link=p;//TODO } else { q = p; if(p->link!=NULL) p=p->link; } } i ; } int max=0; for(int i=0;i<=num;i ) { if(ci[max].time