C语⾔数据结构统计英⽂⽂字每个“单词”出现次数
题⽬:
假设每⾏⽂字长度不超过80个字符,每个单词由空格分隔,单词长度不超过20个字符。现在要从键盘上输⼊⼀段英⽂⽂字,当输⼊“stop ”后,结束输⼊过程。先编程统计在这段⽂字中每个单词出现的个数。
百合网实体店分析:
通过空格判断单词,单词存放在结构体当中,arch函数检测当前单词是否为重复出现的单词
cut函数分隔字符串,使其成为单词
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#define MAXSIZE 300
typedef struct node{
char letter[20];
int q;
struct node *next;
}Node;
bool arch(Node **L,char a[])//检测单词是否存在
{
if((*L)->next==NULL)//如果链表当中没有⼀个单词,则默认为当前单词⽆重复
return true;
Node *p=(*L)->next;
while(p!=NULL){//检测单词麻辣鱼的做法
if(strcmp(p->letter,a)==0)
break;
查济村
el
p=p->next;
}
if(p!=NULL){
++p->q;
return fal;//在链表当中查到存在相同的单词
}
el
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]='\0';//补全j的最后⼀位
++i;//i循环到单词的后⾯空格处,跳过空格
if(strcmp(temp,"stop")==0)//遇到stop,函数结束
return;
bool is_overlap=arch(&L, temp);//确认是否存在于节点当中,传⼊L指针的地址
if(is_overlap)//如果单词⽆重复,创建⼀个节点存放当前单词
{如何开港股账户
Node *node=(Node *)malloc(sizeof(Node));
strcpy(node->letter, temp);
node->q=1;
node->next=NULL;
rear->next=node;采的成语
rear=node;
}
}
}
void print(Node *art)
{英语4级词汇
Node *p=art->next;
while(p!=NULL){
printf("%s(%d)\t",p->letter,p->q);
p=p->next;
}
printf("\n");
}
int main(){
char a[MAXSIZE];
printf("输⼊⼀串字符,相互之间⽤空格隔开,结尾以stop\n"); gets(a);
int n=(int)strlen(a);
if(a[n-1]!='')
a[n]='';
初中英语范文
a[n+1]='\0';
Node art={"hello",1000};
cut(a, &art);
print(&art);
}