题目:
假设每行文字长度不超过80个字符,每个单词由空格分隔,单词长度不超过20个字符。现在要从键盘上输入一段英文文字,当输入“stop ”后,结束输入过程。先编程统计在这段文字中每个单词出现的个数。
分析:
通过空格判断单词,单词存放在结构体当中,search函数检测当前单词是否为重复出现的单词
cut函数分隔字符串,使其成为单词
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<stdbool.h> #define MAXSIZE 300 typedef struct node{ char letter[20]; int seq; struct node *next; }Node; bool search(Node **L,char a[])//检测单词是否存在 { if((*L)->next==NULL)//如果链表当中没有一个单词,则默认为当前单词无重复 return true; Node *p=(*L)->next; while(p!=NULL){//检测单词 if(strcmp(p->letter,a)==0) break; else p=p->next; } if(p!=NULL){ ++p->seq; return false;//在链表当中查到存在相同的单词 } else return true;//没有查到相同的单词 } void cut(char a[],Node *L) { int n=(int)strlen(a); int i=0;//i在文本中走,j在链表中的单词里走 Node *rear=L; while(i<n) { char temp[20];int j=0; while(a[i]!=' ') temp[j++]=a[i++]; temp[j]='