统计文章相同单词

来源:互联网 发布:mac版的炒股软件 编辑:程序博客网 时间:2024/05/16 10:52
程序实现的功能是统计一篇文章的单词,输出单词和单词出现的次数思路:遍历文章,每次找到一个单词,与链表中储存的单词进行比较,如果链表中有,相应单词的计数+1,如果链表中没有,将该单词作为结点头插入带头结点的单向链表可优化的地方:a.我没有对英文字母的大小写和标点符号进行处理 b.我没有想到合适的打开一篇文章的方法 c.我想知道这种方法和其他方法相比,效率怎么样//统计一篇文章的单词#include#include#includetypedef struct node{char s[20];int num;node *next;}ElemSN;int main(void){char str[1000];/*FILE *fp;fp=fopen(fp,"文章.txt","w+");if(fp==NULL){ printf("can't open this file!\n");exit(0);}fscanf("%s",str);*/gets(str);puts(str);char m_s[20];ElemSN* head=(ElemSN*)malloc(sizeof(ElemSN));head->next=NULL;for(int i=0;str[i];)//遍历字符串{ElemSN *q;int flag=0;for(int j=i;str[j]==' ';j++);for(int k=j,t=0;str[k]&&str[k]!=' ';k++)//出循环k指向空格或者结束m_s[t++]=str[k];m_s[t]='\0';for(q=head->next;q;q=q->next){if(strcmp(m_s,q->s)==0){(q->num)++;flag=1;break;}}if(flag==0){ElemSN *p=(ElemSN*)malloc(sizeof(ElemSN));p->num=1;strcpy(p->s,m_s);p->next=head->next;head->next=p;}i=k;}for(ElemSN *q=head->next;q;q=q->next){printf("%20s",q->s);printf("%5d\n",q->num);}return 0;}
原创粉丝点击