欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

词频统计的完善版

程序员文章站 2022-06-04 18:55:40
...
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\0",&input);
	FILE *fp;
	if((fp=fopen(input, "r"))==NULL)
    {
        printf("无法打开文件\n");
        exit(0);
    

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