词频统计的完善版

struct LNode *Create()
{
    LinkList L;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL; 
    return L;
}

 创建一个带有头节点的单链表

bool Find(LinkList &L,char a[20])//查找单词
{
    LNode *p;
    p=L->next;
    while(p!=NULL)
    {
        if(strcmp(a,p->c)==0){//找到单词
            p->count++;//计数加一
            return true;
        }
        else p=p->next;
    }
    return false;
}

 判断新搜索的单词是否和原来的一样,若是一样则在相应节点的结构体里加一

void Insert(LinkList &L,char a[20])
{
    LNode *p;
    p=(LinkList)malloc(sizeof(LNode));
    strcpy(p->c,a);
    p->count=1;
    p->next=L->next;
    L->next=p;
}

 若是搜索到的单词和之前的结果全都不一样,再新建立一个节点,词数计为1.

void SelectSort(LinkList &L){
	LNode *p,*q;
	p=(LinkList)malloc(sizeof(LNode));
	q=(LinkList)malloc(sizeof(LNode));
	char tempc[20];
	int temp;
    for (p=L->next; p!=NULL; p=p->next)
    {
        for (q = p; q!=NULL; q=q->next)
        {
            if (p->count < q->count)
            {
                temp=p->count;
				strcpy(tempc,p->c);
                p->count=q->count;
				strcpy(p->c,q->c);
				q->count=temp;
				strcpy(p->c,tempc);
            }
        }

 运用的选择排序对词数进行排序。

printf("请输入文件名:");
	scanf("%s",&input);
	FILE *fp;
	if((fp=fopen(input, "r"))==NULL)
    {
        printf("无法打开文件
");
        exit(0);
    

根据文件名读入文本文件。

原文地址:https://www.cnblogs.com/duq11/p/5870032.html